Dieser Artikel bietet Ihnen eine detaillierte Einführung in PHP-Typbeschränkungen (mit Code). Freunde in Not können darauf verweisen.
Einführung: Die sogenannte Typbeschränkung bedeutet, dass beim Definieren einer Variablen deren Typ angegeben werden muss und die Variable in Zukunft nur noch Daten dieses Typs speichern kann. Obwohl PHP eine schwach typisierte Sprache ist, unterstützt es bereits Typbeschränkungen in PHP 5, einschließlich Objekten, Schnittstellen und Arrays. Es unterstützt Skalartypbeschränkungen nach PHP 7. Hier sind einige Beispiele.
Skalartyp, Array
Geben Sie den Typ im Parameter an. Wenn er inkonsistent ist, wird ein abfangbarer schwerwiegender Fehler
<?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
ausgegeben oben gilt das Gleiche für Skalartypen
<?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,是否为男孩:是
Objekt, Schnittstelle
Typbeschränkungen können auch als Objekte oder Schnittstellen angegeben werden. Definieren Sie zunächst eine Human
-Schnittstelle, und die beiden Klassen Boy
und Girl
implementieren jeweils die Schnittstelle
<?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'; } }
. Erstellen Sie dann eine neue Klasse, um
<?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
zu testen, wenn die Typbeschränkung a ist spezifisches ObjektBoy
oder Girl
, nur das angeforderte Objekt kann übergeben werden. Wenn es sich bei der Typbeschränkung um eine Schnittstelle Human
handelt, können Sie die Klasse Boy
oder Girl
übergeben, die die Schnittstelle implementiert.
[Verwandte Empfehlungen: PHP-Video-Tutorial]
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in PHP-Typbeschränkungen (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!