1. ホーム
  2. php

[解決済み] PHP 5.4 Call-time pass-by-reference - Easy fix available?

2022-02-02 20:38:09

質問

この問題を簡単に解決する方法はありますか?それとも、本当にレガシーコードをすべて書き直す必要がありますか?

PHP Fatal error: 呼び出し時の参照渡しは削除されました in ... on line 30

これは、コード全体で変数が参照として関数に渡されるため、あらゆる場所で発生します。

解決するには?

関数定義の中で、実際の呼び出しではなく、参照による呼び出しを表す必要があります。 PHPはバージョン5.3からdeprecationエラーを表示するようになったので、コードを書き直した方が良いと思います。

ドキュメントより :

関数呼び出しには参照符号はありません - 関数定義にのみあります。 関数定義だけで、正しく引数を参照渡しすることができます。PHP 5.3.0 以降では、以下のような場合に "呼び出し時参照渡し" は非推奨であるという警告が表示されます。 &foo(&$a); .

例えば、使用する代わりに

// Wrong way!
myFunc(&$arg);               # Deprecated pass-by-reference argument
function myFunc($arg) { }

使用してください。

// Right way!
myFunc($var);                # pass-by-value argument
function myFunc(&$arg) { }