>  기사  >  백엔드 개발  >  PHP의 유형 제약 소개

PHP의 유형 제약 소개

怪我咯
怪我咯원래의
2017-07-14 14:33:461418검색

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(&#39;print_r&#39;, 1);
$test->test_interface(new ArrayObject(array()));
$test->test_class_with_null();

그럼 스칼라 유형을 제한하는 방법은 무엇입니까?

PECL 확장 라이브러리는 정수, 부동 소수점, 부울, 열거형 및 문자열 유형 제약 조건을 구현하는 SPL 유형 확장을 제공합니다.

코드는 다음과 같습니다.

$int  = new  SplInt ( 94 );
 
try {
     $int  =  &#39;Try to cast a string value for fun&#39; ;
} catch ( UnexpectedValueException $uve ) {
    echo  $uve -> getMessage () .  PHP_EOL ;
}
 
echo  $int  .  PHP_EOL ;
/*
运行结果:
Value not an integer
94
*/

PS: SPL 유형은 유연성과 성능을 어느 정도 감소시키므로 실제 프로젝트에서는 다시 한 번 생각해 보세요.

위 내용은 PHP의 유형 제약 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.