이 기사는 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
두 클래스가 각각 인터페이스를 구현합니다Human
接口,Boy
和 Girl
两个类分别实现接口
<?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
rrreee
rrreee 유형 제약 조건이 특정 개체 Boy
또는 Girl
인 경우 필수 개체만 전달할 수 있습니다. 유형 제약 조건이 Human
인터페이스인 경우 인터페이스를 구현하는 Boy
또는 Girl
클래스를 전달할 수 있습니다.
【관련 추천:
】
🎜🎜🎜위 내용은 PHP 유형 제약 조건에 대한 자세한 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!