alle über das Internet [1][2][3], heißt es, dass seit PHP 5.0.0 „den Rückgabewert der neuen durch Verweis zuweisen“ eine Version E_DEPRECATED
oder E_STRICT
je nach PHP gibt (E_DEPRECATED
nicht existiere bis 5.3, also war es vorher E_STRICT
).New durch Verweis nicht Warnung geben
Als solche ist sie mein Verständnis ist, dass dieser Code eine solche Warnung geben sollte:
error_reporting(E_ALL | E_STRICT);
class A
{
}
$a =& new A();
Allerdings habe ich schon versucht, diese auf zwei völlig verschiedenen Servern (ein mit PHP 5.3 und eine laufende PHP 5.2) und weder gibt tatsächlich irgendeine Nachricht! Was ist los? Ist mein Verständnis falsch oder ist auf diesen beiden Servern etwas Seltsames passiert?
(ich denke auch, es seltsam ist, dass diese veraltet ist, zu sehen, dass $a = null; $b =& $a; $b = new A();
nicht die gleiche wie $a = null; $b =& $a; $b =& new A();
tut, aber das ist nur ein Teil der Frage, ob ich was falsch verstanden ist veraltet ...)
Seltsamerweise bekomme ich nur diesen Fehler, wenn ich dies auf 'phpsh',' PHP veraltet ausführen: Zuweisen des Rückgabewerts von neuen durch Verweis ist veraltet in /Library/Python/2.7/site-packages/phpsh/phpsh.php (578): eval() 'd code in Zeile 1', aber nicht, wenn ich es direkt von cli aus führe. – Dogbert
@Dogbert: Das ist in der Tat seltsam. Ich habe es nur aus externen Apache-Servern selbst versucht, aber wenn ich die Zeit habe, werde ich schauen, es von der Kommandozeile und 'phpsh' selbst ausgeführt – Jasper
Es würde mich überhaupt nicht überraschen, wenn das Problem hier woanders liegt: versuchen Sie es mit'E_ALL | E_STRICT' direkt in Ihrer php.ini, vergessen Sie nicht, auch die php-cli.ini zu ändern, wenn Sie diesen Code in der Kommandozeile ausführen. Überprüfen Sie auch, ob die Fehler nicht versteckt sind, indem Sie ein 'ini_set ('display_errors', 1);'. Wenn Sie dies auf einer Windows-Box ausführen, gibt es [einige Fehler] (https://bugs.php.net/bug.php?id = 46326) mit dieser in der Vergangenheit –