ホームページ >バックエンド開発 >PHPチュートリアル >致命的なエラー: 呼び出し時の参照渡しが削除されました,passbyreference_PHP教程
次のコードはエラーを報告します: 致命的なエラー: 呼び出し時のパスバイリファレンスが削除されました
function myFunc($arg) { 何かをする... }
myFunc(&$arg);//myFunc を呼び出します
または
function myFunc(&$arg) { 何かをする... }
myFunc(&$arg);//myFunc を呼び出します
エラー分析:
allow_call_time_pass_reference boolean
関数呼び出し中にパラメーターが参照によって渡されたときに警告を発行するかどうか。このメソッドは非推奨であり、PHP/Zend の将来のバージョンではサポートされなくなる可能性があります。どのパラメータを参照によって渡す必要があるかを関数定義で指定することをお勧めします。将来のバージョンでもスクリプトが動作することを保証するために、このオプションをオフにしてスクリプトが適切に実行されることを確認することをお勧めします (この機能を使用するたびに警告が表示されます)。
関数を呼び出すときに参照によってパラメーターを渡すことはお勧めできません。コードのクリーンさに影響するからです。関数のパラメーターが参照渡しとして宣言されていない場合、関数は文書化されていないメソッドを通じてパラメーターを変更できます。副作用を回避するには、関数が宣言されるときにのみ、パラメーターを参照によって渡す必要があることを指定することをお勧めします。
allow_call_time_pass_reference バージョンの説明の変更ログ
5.4.0 PHP から削除されました。
5.3.0 E_DEPRECATED レベルのエラーを生成します。
5.0.0 非推奨で、E_COMPILE_WARNING レベルのエラーを生成します。
関数の呼び出し時に参照パラメータが削除されました。つまり、関数(& $a) パラメーターを渡して関数を呼び出します。
解決策:
php.ini 構成ファイルを確認し、allow_call_time_pass_reference パラメーターを true に調整して、サーバーを再起動してみてください。
さらに、php のバージョン 5.4 にアップグレードした後、以前の php コードで次のエラーが発生する可能性があります:
次のような関数 (またはクラス) を使用すると、エラーが生成されます:
myFunc(&$arg);//myFunc を呼び出します
実際、このように使用するのは間違っていますが、以前のエラーレベルは非推奨のみでした。
関数を定義するときにこれを使用する正しい方法は次のとおりです:
function myFunc(&$arg) { 何かをする... }
呼び出し時にパラメータを直接渡すだけです:
myFunc($var);//myFunc を呼び出します
これは、呼び出し時に参照パラメータが削除されたことを意味します。つまり、関数を function(&$a) で呼び出すことができません。
解決策:
php.ini 設定ファイルを確認し、allow_call_time_pass_reference パラメータを次のように変更します。 true の場合はサーバーを再起動してみてください。
======================================
尚、先ほどのPHPコードはPHP のバージョン 5.4 にアップグレードした後に更新すると、次のエラーが発生する可能性があります:
このような関数 (またはクラス) を使用すると、エラーが生成されます:
foo(&$var);
実際に使用すると、次のようになります。方法が間違っています。前のエラーレベルが非推奨になっただけです。
これを使用する正しい方法は、関数を定義するときに行う必要があります:
function foo(& $var) {
//other code
}
そして、呼び出し時にパラメーターを直接渡すだけです: foo($var);
問題のある行に移動し、&$this などの変数から & を削除して、xampp または bugfree を再起動するか、php.ini のallow_call_time_pass_reference=On を変更します。
http://www.bkjia.com/PHPjc/880093.html