4

最近、PHP5.2.xのDrupal6モジュールをPHP5.3.xのDrupal7に変換し始めましたが、次の警告が表示されます。

非推奨の関数:参照によるnewの戻り値の割り当ては、require_once()(C:\ Users \ ajinkya \ Desktop \ xampp \ php \ PEAR \ SOAP \ WSDL.phpの27行目)で非推奨になっています。

WSDL.phpの27行目は次のとおりです。require_once 'HTTP/Request.php';

この警告の原因がわかりません。require_once()PHP 5.3.xでの動作は変更されましたか?

Drupal 7のfile.incには:という行がありrequire_once DRUPAL_ROOT . '/includes/stream_wrappers.inc;、警告はスローされません。なんで?

error_reporting(E_ALL & ~E_DEPRECATED);Drupal 7のsetting.phpを入力すると、警告が消えます。そのような警告を抑えるのは良いことですか?

4

3 に答える 3

5

エラーメッセージは、コードがの$something = &new SomeObject();代わりにを使用していることを示しています$something = new SomeObject();

&new古いPHPバージョンでは、オブジェクトが常に参照によって渡されるようにするために必要でした。ただし、最近のバージョンでは、これを行う理由がまったくないため、非推奨になっています。

PHPが間違ったファイル名/行番号を報告する理由がわかりません...

于 2011-01-22T20:34:55.013 に答える
2

そのようなエラーを抑えるのは良いですか?

依存します。エラーを無視することは決して良い考えではありません。厳密なレポートを有効にしておくことは、開発段階では良い考えです。ただし、PHPがそのようなデバッグメッセージを通知したら、それを評価し、それに基づいて情報に基づいた決定を行います。

上記の問題を回避するか、修正するか、実際の問題でない場合は無視することができます。

参照によるオブジェクトの割り当ては不要であり、今後は非推奨になります。ただし、エラーにつながる問題ではなく、意味的に禁止されることはありません。将来のバージョンで構文構造を削除すると互換性が失われるため、発生しません。この場合の情報に基づく選択は、構文ヒントを確認して無視するか、&不要であるため削除するか、この特定のインスタンスで削除しても動作が損なわれる可能性はほとんどないためです。

于 2011-01-22T20:47:22.400 に答える
0

PHPサイトには、require_onceが非推奨であることを示すものは何もありません。おそらく、内部の何かがHTTP/Request.php代わりに非推奨になっていますか?これはかなり奇妙な警告です。

于 2011-01-22T20:33:53.550 に答える