PHP는 약한 유형입니다. 변수에 대한 유형을 지정할 필요가 없으며 이후에 모든 유형을 저장할 수 있습니다. 그러나 PHP의 새로운 구문에서는 일부 특정 유형에 대해 사용됩니다. , 문법적 제약도 가능합니다.
특정 경우: 함수의 형식 매개변수 변수(메서드)
특정 유형: 객체 유형(클래스 이름), interfacetype(인터페이스 이름), arraytype(배열), 함수 유형(호출 가능)
this 이 문서에서는 주로 PHP의 유형 제약 조건을 소개합니다. 유형 제약 조건은 PHP 클래스 메서드 및 함수에서 구현할 수 있지만 매개 변수는 클래스, 배열, 인터페이스 및 호출 가능의 네 가지 유형만 지정할 수 있습니다. . PHP는 스칼라 유형이나 다른유형을 제한할 수 없습니다. 필요한 친구는 다음
예를 참조할 수 있습니다.
<?php class Test { public function test_array(array $arr) { print_r($arr); } public function test_class(Test1 $test1 = null) { print_r($test1); } public function test_callable(callable $callback, $data) { call_user_func($callback, $data); } public function test_interface(Traversable $iterator) { print_r(get_class($iterator)); } public function test_class_with_null(Test1 $test1 = NULL) { } } class Test1{} $test = new Test(); //函数调用的参数与定义的参数类型不一致时,会抛出一个可捕获的致命错误。 $test->test_array(array(1)); $test->test_class(new Test1()); $test->test_callable('print_r', 1); $test->test_interface(new ArrayObject(array())); $test->test_class_with_null();
그럼 스칼라 유형을 제한하는 방법은 무엇입니까?
PECL 확장 라이브러리는 정수, 부동 소수점, 부울, 열거형 및 문자열 유형 제약 조건을 구현하는 SPL 유형 확장을 제공합니다.
코드는 다음과 같습니다.
$int = new SplInt ( 94 ); try { $int = 'Try to cast a string value for fun' ; } catch ( UnexpectedValueException $uve ) { echo $uve -> getMessage () . PHP_EOL ; } echo $int . PHP_EOL ; /* 运行结果: Value not an integer 94 */
PS: SPL 유형은 유연성과 성능을 어느 정도 감소시키므로 실제 프로젝트에서는 다시 한 번 생각해 보세요.
위 내용은 PHP의 유형 제약 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!