#php7 の型制約の意味
前PHP7 、関数とクラス メソッドは変数の型を宣言する必要がなく、任意のデータを渡したり返したりできるため、ほとんどの呼び出し操作で、返されたデータ型が修飾されているかどうかが判断されます。
この問題を解決するために、PHP7 では型宣言が導入されました。 現在、宣言できる変数には、仮パラメータと戻り値の 2 種類があります。 サポートされる型には、整数、浮動小数点、文字列、およびブール値が含まれます。 次のコード:<?php function study(int $get) { return $get; } var_dump(study('ddd'));コードの長さを節約するために、OOP は記述せず、関数を例として使用します。 この関数はパラメーターの型が int であることを指定しており、呼び出し時に「ddd」文字列が渡されるため、このコードを実行すると致命的エラーが発生します。 場合によっては、次のように、PHP は常にそれほど深刻ではありません:
<?php function study(bool $get) { return $get; } var_dump(study('ddd'));指定されたパラメーターの型は bool ですが、受信文字列は true に変換されます。実行後の出力結果は次のとおりです: bool(true) 制約タイプを強制する場合は、ファイルの先頭に宣言ステートメントを追加できます:
<?php declare(strict_types = 1); function study(bool $get) { return $get; } var_dump(study('ddd'));このとき、指定されたパラメータの型は bool ですが、渡されたパラメータの型は string であるため、致命的なエラーが発生します。1 または 0 の場合でも、'ddd' を true または false に変更するだけで機能します。 次に、戻り値の型宣言を紹介します。
<?php declare(strict_types = 1); function study(bool $get) : int { return (int)$get; } var_dump(study(true));仮パラメータのかっこの後にコロンと型を追加して、メソッドの戻り値の型とその内容を指定します。戻り値の型が指定されています。 宣言の影響も受けます。型必須制約がない場合、PHP は返されたデータを指定された型のデータに変換して返します。現在、文字列のみを使用できません。 int に強制されると、エラーが報告されます。 必須制約が指定されている場合、PHP は型変換を行わずに比較を行い、型が異なる場合はエラーが報告されます。 また、戻り値の型でオブジェクト名を指定することもできます。その場合は、指定されたオブジェクトのインスタンスが返される必要があります (例:
<?php class person { private function __construct($name) { $this->name = $name; } static function instance(string $name) : person { return new self($name); } } person::instance('zhangsan');
#) ##これは PHP7 の新機能の 1 つである型宣言です。
以上がphp7の型制約の意味の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。