web-dev-qa-db-ja.com

参照によるnewの戻り値の割り当ては非推奨です

エラーが発生しました。

このようなオブジェクトを割り当てようとすると:

$obj_md = new MDB2();

私が受け取るエラーは、「参照によるnewの戻り値の割り当ては非推奨です」です。実際に私は解決策を探していましたが、私が見た唯一の解決策は、php.ini(error_reporting)の政治を拒否することです。私も試してみましたが、うまくいきませんでした。

とても紛らわしいです。助けていただければ幸いです。前もって感謝します。

62

PHP5では、このイディオムは非推奨です

$obj_md =& new MDB2();

サンプルコードでアンパサンドを見逃していないことを確認してください。それはあなたが述べる警告を生成しますが、それは必須ではなく、削除することができます。

このイディオムがPHP4で使用された理由を確認するには、 このマニュアルページ を参照してください(PHP4は長い間使用されておらず、このリンクは関連ページのアーカイブバージョンへのリンクです)

94
Paul Dixon

最近、SimplePie( http://simplepie.org/ )を使用するサイトを、PHP 5.2.17を使用していたサーバーからPHP 5.3を使用するサーバーに移動しました。 2。この移動の後、次のようなエラーメッセージのリストを受け取り始めました。

非推奨:参照によるnewの戻り値の割り当ては、.../php/simplepie.incの738行目で非推奨です

この問題に関するいくつかの議論を確認した後、=&newのすべてのインスタンスを=に置き換えることで問題を解決しました。 simplepie.incファイルのnew

これらのエラーメッセージが受信されるすべてのインスタンスでこれが機能するかどうかを知るのに十分な経験はありませんが、この特定のケースでは機能し、試してみる価値があるかもしれません。

27
John Crockford

おそらく、MDB2のコンストラクターには、$ variable =&new ClassName();を使用するコードがいくつかあります。

9
Nitin

Nitinは正しい-問題は実際にはMDB2コードにあります。

PEARの置き換え:PHP 5.3のMDB2 に従って、PHP5.3互換のバージョンのMDB2のSVNバージョンに更新できます。

その答えは2010年3月に与えられたので、 http://pear.php.net/package/MDB2/ は数か月後にリリースを示しています。 。

8
Chris Burgess

 PHPで使用され、オブジェクトをメソッドに渡したり、参照によって新しいオブジェクトを変数に割り当てたりします。 PHP 5はデフォルトですべてのオブジェクトを参照渡しするため、PHP 5では非推奨です。

7
Jeshurun

同じ問題がありました。私はすでに「&」を持っていますが、それでも同じ警告が出ていました。私はWAMPでPHP 5.3を使用していますが、 '&'記号を削除するだけで警告は消えました。

$obj= new stdClass();  //Without '&' sign.
7
Vishnu Narang

$obj_md =& new MDB2();newを削除するだけです

1
Never Say Die

コンソールからpear/MDB2をアップグレードします。

# pear upgrade MDB2-beta
# pear upgrade MDB2_Driver_Mysql-beta

バージョン2.5.0b3で解決された問題

0
Serhii Koval

これは、JoomlaではなくWAMP 2.0iパッケージに含まれるPHP 5.3が原因で発生しました。

修正するには2つの選択肢があります。

wAMP 2h(以前のバージョン)または download PHP 5.2.9-2 WAMP Webサイトからアドオンを使用します。

0
Shailesh Patel