Frage

Ich bin zu einem neuen Webhost umgezogen, wo wir PHP 5.1 anstelle von 5.2 haben, das ich bisher verwendet habe.Ich habe immer noch nicht herausgefunden, ob es sich um eine PHP-Version oder ein Konfigurationsproblem handelt.

Im Moment werden die meisten (oder alle) Klassen mit __toString-Funktionen in „Object ID #“ konvertiert (wie in PHP4), aber vorher haben sie alle die richtigen Werte zurückgegeben.

Wie kann ich das beheben?

War es hilfreich?

Lösung

Offenbar vor PHP 5.2 die __toString Methode war nur „magisch“ bezeichnet unter bestimmten Umständen (z echo() und print()). Also, wenn Sie sich gerade __toString() in einer „magischen“ Art und Weise außerhalb der direkten Ausgabe-Funktionen verwenden wird es nicht funktionieren wie erwartet.

Quelle :

  

Es ist erwähnenswert, dass vor PHP   5.2.0 wurde die __toString Methode nur aufgerufen, wenn es direkt kombiniert wurde   mit echo() oder print(). seit PHP   5.2.0 es wird in jedem String-Kontext (z.B. in printf() mit %s genannt   Modifikator), aber nicht in anderen Typen   Kontexte (z.B. mit %d modifier).   Seit PHP 5.2.0, Konvertieren Objekte   ohne __toString Verfahren zu bespannen   verursachen würde E_RECOVERABLE_ERROR.

Andere Tipps

Einige Host-Unternehmen (wie 1and1) führen sowohl PHP 4.x als auch 5.x aus und verwenden standardmäßig 4.x.Möglicherweise benötigen Sie eine .htaccess-Datei, die sicherstellt, dass Sie die richtige PHP-Version verwenden.

Außerdem unterscheidet sich die magische Funktion __toString() geringfügig von Version 5.2+ Dokumentation:

Es ist erwähnenswert, dass die __toString-Methode vor PHP 5.2.0 nur aufgerufen wurde, wenn sie direkt mit echo() oder print() kombiniert wurde.Seit PHP 5.2.0 wird es in jedem String-Kontext aufgerufen (z. B.in printf() mit dem Modifikator %s), aber nicht in anderen Typkontexten (z. B.mit %d-Modifikator).Seit PHP 5.2.0 würde die Konvertierung von Objekten ohne __toString-Methode in einen String E_RECOVERABLE_ERROR verursachen.

Es kann also davon abhängen, wie Sie die Ausgabe aufrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top