この記事では、PHP の型制約について詳しく説明します (コード付き)。一定の参考値があります。困っている友人は参照してください。お役に立てれば幸いです。
はじめに: いわゆる型制約とは、変数を定義するときにその型を指定する必要があり、変数は今後この型のデータのみを格納できることを意味します。 PHP は弱い型指定言語ですが、オブジェクト、インターフェイス、配列などの型制約は PHP 5 ですでにサポートされており、PHP 7 以降ではスカラー型制約もサポートされています。
スカラー型、配列
パラメータに型を指定します。矛盾している場合は、キャッチ可能な致命的なエラーがスローされます
<?php /** * 数组类型约束 * @param array $arr */ function printArray(array $arr) { echo implode(',', $arr); } printArray(array(1, 2, 3));// 1,2,3 printArray('1');// Fatal error: Uncaught TypeError: Argument 1 passed to printArray() must be of the type array, string given, called in D:\WWW\test.php on line 13 and defined in D:\WWW\test.php:7 Stack trace: #0 D:\WWW\test.php(13): printArray('1') #1 {main} thrown in D:\WWW\test.php on line 7
次のように上記では、スカラー型にも同じことが当てはまります。
<?php /** * 标量类型约束 * @param string $name * @param int $age * @param float $height * @param bool $isBoy */ function sayInfo(string $name, int $age, float $height, bool $isBoy) { echo '姓名:' . $name . ',年龄:' . $age . ',身高:' . $height . ',是否为男孩:' . ($isBoy ? '是' : '否'); } sayInfo('tom', 12, 134.5, true);// 姓名:tom,年龄:12,身高:134.5,是否为男孩:是
オブジェクト、インターフェイス
型制約は、オブジェクトまたはインターフェイスとして指定することもできます。まず、Human
インターフェイスを定義し、Boy
と Girl
の 2 つのクラスがそれぞれそのインターフェイスを実装します。
<?php /** * 接口 * Interface Human */ interface Human { public function say(); public function run(); } /** * 实现 Human 接口 * Class Boy */ class Boy implements Human { public function say() { echo 'a boy say'; } public function run() { echo 'a boy run'; } } /** * 实现 Human 接口 * Class Girl */ class Girl implements Human { public function say() { echo 'a girl say'; } public function run() { echo 'a girl run'; } }
次に、テストする新しいクラスを作成します
<?php include './human.php'; class Action { /** * Boy 对象类型约束 * @param Boy $boy */ public function boySay(Boy $boy) { $boy->say(); } /** * Girl 对象类型约束 * @param Girl $girl */ public function girlSay(Girl $girl) { $girl->say(); } /** * Human 接口类型约束 * @param Human $obj */ public function humanRun(Human $obj) { $obj->run(); } } $obj = new Action(); $obj->boySay(new Boy());// a boy say echo '<br />'; $obj->girlSay(new Girl());// a girl say echo '<br />'; $obj->humanRun(new Boy());// a boy run echo '<br />'; $obj->humanRun(new Girl());// a girl run
型制約が特定のオブジェクト Boy
または Girl
の場合、必要なオブジェクトのみを渡すことができます。型制約がインターフェイス Human
である場合、インターフェイスを実装するクラス Boy
または Girl
を渡すことができます。
【関連する推奨事項: PHP ビデオ チュートリアル ]
以上がPHP の型制約の詳細な紹介 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。