ホームページ >バックエンド開発 >PHPチュートリアル >PHP の Strict モードで「変数のみ参照渡しする必要がある」と警告されるのはなぜですか?

PHP の Strict モードで「変数のみ参照渡しする必要がある」と警告されるのはなぜですか?

DDD
DDDオリジナル
2025-01-01 13:55:19484ブラウズ

Why Does PHP's Strict Mode Warn

厳密な標準: 「参照によって渡されるのは変数のみである必要がある」という警告について理解する

PHP では、厳密モードでは、改善のため特定のプログラミング手法が強制されます。コードの品質と一貫性。そのような実践の 1 つは、非変数値を参照によって渡すことを避けることです。この質問では、この警告の背後にある理由を調査し、警告を回避するための解決策を示します。

問題: 参照パラメータと戻り値

次のコード スニペットを考えてみましょう:

$el = array_shift($instance->find(..))

このコードは、「変数のみが参照によって渡されるべきである」という厳格な標準警告をトリガーします。ただし、次のコードはそうではありません:

function get_arr(){
    return array(1, 2);
}
$el = array_shift(get_arr());

この動作を理解するには、PHP の参照処理を詳しく調べる必要があります。参照が関数に渡されると、そのパラメーターによって参照される変数に加えられた変更は元の変数に反映されます。最初のコード スニペットでは、$instance->find(...) は変数ではない配列を返します。この配列を参照渡しすると、警告がトリガーされます。

例外について

ただし、この例外は誤解を招く可能性があります。 2 番目のコード スニペットでは、関数 get_arr() が配列を返します。これは、配列に参照を渡すことができることを意味します。ただし、関数自体は参照パラメーターを使用しないため、警告は回避されます。

警告を回避する解決策

警告を除去するには、2 つのオプションがあります。 :

  1. メソッド署名の変更: メソッドの署名を変更します参照パラメータを使用しないようにするには、参照パラメータを受け取ります。
  2. 中間変数を使用する: 参照パラメータを使用しないメソッドの戻り値を保持する中間変数を作成します。次に、中間変数を参照渡しします。

例:

function get_arr(){
    return array(1, 2);
}

$inter = get_arr();
$el = array_shift($inter);

中間変数 $inter を使用することで、次の戻り値を渡すことを回避します。 get_arr() を参照によって直接取得し、厳格な標準に関する警告を解決します。

以上がPHP の Strict モードで「変数のみ参照渡しする必要がある」と警告されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。