ウェブ全体[1] [2] [3]では、PHP 5.0.0 以降、「参照によって new の戻り値を割り当てる」と、PHP のバージョンに応じてE_DEPRECATED
orが返されると書かれています ( 5.3 までは存在しなかったため、その前だった)。E_STRICT
E_DEPRECATED
E_STRICT
そのため、このコードはそのような警告を出す必要があると私は理解しています:
error_reporting(E_ALL | E_STRICT);
class A
{
}
$a =& new A();
ただし、これを 2 つのまったく異なるサーバー (PHP 5.3 を実行しているサーバーと PHP 5.2 を実行しているサーバー) で試しましたが、どちらも実際にはメッセージを出していません! どうしたの?私の理解は間違っていますか、それともこれらの 2 つのサーバーで何かおかしなことが起こっていますか?
(また、これが非推奨であることも奇妙だと思います。それは と$a = null; $b =& $a; $b = new A();
同じことをしないのを見て$a = null; $b =& $a; $b =& new A();
、しかし、非推奨とは何かを誤解した場合、それは問題の一部にすぎません...)