この記事は主に、PHP のさまざまなバージョンでの関数の型宣言の使用方法をまとめたものです。必要な方は参考にしていただければ幸いです。
PHP7 はスカラー型宣言のサポートを開始し、強く型付けされた言語の風味が比較的強くなります。この機能を使用しているときに 2 つの落とし穴に遭遇しました。1 回目は boolean を宣言するとき、そして最近では double を宣言するときです。今後同じような間違いをしないように、一度公式ドキュメントを読みました。この記事は、PHP 関数での型宣言の使用法を読んだ後にまとめたものです。
構文的には、PHP 関数定義はいくつかの時代を経てきました:
古代時代 (PHP 4)
関数の定義は、関数名(引数) {body} の構文宣言を使用することで非常に簡単です。パラメータと戻り値の型を指定することはできず、パラメータと戻り値の型には無限の可能性があります。これは、関数を宣言する最も一般的な方法です。
配列と参照型のパラメータ値の宣言 (PHP 5)
関数宣言では、配列、クラス、インターフェイス、関数 (呼び出し可能) を使用できます。 5.6 以降、定数 (クラス定数を含む) がデフォルトのパラメーターとしてサポートされ、パラメーター配列 (先頭に省略記号が付く) もサポートされます。例:
function sum(...$numbers) { $sum = 0; foreach ($numbers as $number) { $sum += $number; } return $sum; }
注: パラメータの値が null の可能性がある場合は、パラメータのデフォルト値を null にする必要があります。そうしないと、呼び出し時にエラーが発生します。例:
function foo(array $arr = null) { ... }
スカラー型と戻り値の宣言 (PHP 7)
関数はスカラー型 (int、bool、float など) と戻り値の型を正式にサポートします (宣言可能な型はパラメーターと同じです) ) 宣言。このバージョンから、PHP を書くのは Java を書くのと同じように感じられます。
残念ながら、関数の戻り値がnullになる可能性がある場合、戻り値の型を指定することはできません。例:
function getModel() : Foo { if ($this->_model === null) { $this->_model = xxxx; // get from db or otherelse } return $this->_model; // 如果$this->_model仍是null,运行出错 }
パラメータと戻り値は null および void 戻り値の型宣言 (PHP 7.1)
パラメータと戻り値の型が null の可能性がある場合は、疑問符 (?) で型を変更します。 null 値の問題を解決するには (デフォルトのパラメーターと競合しません)、型宣言により反復可能が追加され、void 型の戻り値もサポートされます。例:
function getModel(?int $id) : ?Foo { if ($id !== null) { $this->_model = xxxx; } else { $this->_model = yyyy; } return $this->_model; } // 调用 $foo->getModel(null); $foo->getModel(100); // 函数声明了参数并且没有提供默认参数,调用时不传入参数会引发错误 // 将函数声明改成 getModel(?int $id = 100) {},可以不传参数 $foo->getModel();
関数の戻り値が void の場合、関数本体内で任意の型の後に return を続けることができないか、return ステートメントが表示されません。
function test(array $arr) : void { if (!count($arr) { return; } array_walk($arr, function ($elem) {xxxx}); }
上記の歴史を確認すると、PHP 7.1 の時点で、関数の型宣言が非常に完成されていることがわかります (ただし、実際にはあまり使用されていません)。
実際に遭遇する落とし穴について話しましょう。パラメーターと戻り値の型宣言に使用できる型は次のとおりです:
array
bool
callable
int
float
string
iterable
現在、PHP 7.2の安定版がリリースされており、新しいプロジェクトではできるだけPHP 7.1以降のバージョンを使用することをお勧めします。明確で保守しやすいコードを作成するには、宣言型を使用することをお勧めします。 null 値は参照型または文字列にのみ使用し、int/float などのスカラー型パラメーターには null を使用しないようにすることをお勧めします。必要な場合を除き、func_get_argc やその他の関数は使用しないようにしてください。
関連する推奨事項:
型制約を使用して PHP 関数の型を制限する方法
JavaScript 関数の関数型の概要関数の型を判断するための Javascript の完璧なソリューション_JavaScript スキル
以上がPHPの各バージョンにおける関数の型宣言の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。