この記事では、さまざまなバージョンの 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 の時点で、関数の型宣言が非常に完全になっていることがわかります (ただし、実際にはあまり使用されていません)。 )。
実際に遭遇する落とし穴について話しましょう。パラメーターと戻り値の型宣言に使用できる型は次のとおりです:
Class/Interface
self。これは独自のメソッドでのみ使用できます。
array
bool
概要
PHP 7.2 の安定版がリリースされました。新しいプロジェクトでは PHP 7.1 以降のバージョンを使用することをお勧めします。明確で保守しやすいコードを作成するには、宣言型を使用することをお勧めします。 null 値は参照型または文字列にのみ使用し、int/float などのスカラー型パラメーターには null を使用しないようにすることをお勧めします。必要な場合を除き、func_get_argc やその他の関数は使用しないようにしてください。
興味があるかもしれない記事:
PHP は ffmpeg を呼び出してビデオのスクリーンショットを撮り、スクリプトを結合します
#
以上がPHPの各バージョンにおける関数の型宣言を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。