PHP 8.0: 必須パラメータがオプション パラメータの後に続く
PHP 8.0 へのアップグレードにより、開発者は次のエラーが発生する可能性があります:
Deprecated: Required parameter $xxx follows optional parameter $yyy in...
このエラーは、関数の宣言にオプションのパラメータが含まれ、その後にパラメータが続く場合に発生します。必須パラメータです。たとえば、次のコードはエラーをトリガーします:
function test_function(int $var1 = 2, int $var2) { return $var1 / $var2; }
Clarifying Functional Implications
8.0 より前の PHP バージョンでは、このような関数宣言が許可されていました。ただし、ReflectionFunctionAbstract クラスを使用して関数とメソッドを分析するときに、矛盾と混乱が生じました。
新しい要件
PHP 8.0 では、必要なすべての要件を要求することで、より論理的なアプローチが強制されます。パラメータは、オプションのパラメータの前に宣言する必要があります。
推奨解決策
エラーを解決するには、オプションのパラメーターからデフォルト値を削除するだけです。いずれにせよ、すべてのパラメータを指定しないと関数を呼び出すことはできないため、機能は影響を受けないはずです:
function test_function(int $var1, int $var2) { return $var1 / $var2; }
以上がPHP 8.0: 必須パラメータをオプションのパラメータよりも前に置く必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。