>백엔드 개발 >PHP 튜토리얼 >PHP 유형 제한이란 무엇입니까? PHP 유형 제약의 소개와 사용법

PHP 유형 제한이란 무엇입니까? PHP 유형 제약의 소개와 사용법

不言
不言원래의
2018-08-08 17:14:582526검색

소위 유형 제약 조건은 변수를 정의할 때 해당 유형을 지정해야 하며 변수는 앞으로 해당 유형의 데이터만 저장할 수 있음을 의미합니다. 이 기사에서는 PHP 유형 제약 조건과 사용법을 소개합니다.

PHP 유형 제약 소개

PHP는 약한 유형의 언어입니다. 그 특징은 변수에 유형을 지정할 필요가 없으며 나중에 어떤 유형이든 저장할 수 있다는 것입니다. PHP를 사용한 신속한 개발의 핵심 포인트. 하지만 PHP5부터 함수(메서드) 매개변수에 유형 제약을 사용할 수 있습니다.

함수 매개변수는 다음 범위에서 지정할 수 있습니다.

1. 객체여야 합니다(함수 프로토타입에 클래스 이름 지정).

3.인터페이스; ;

4. 호출 가능(PHP 5.4부터).

5. 매개변수의 기본값으로 NULL을 사용하는 경우에도 함수 호출 시 실제 매개변수로 NULL을 사용할 수 있습니다.

6. 클래스나 인터페이스가 유형 제약 조건을 지정하는 경우 모든 하위 클래스나 구현도 마찬가지입니다.

Note

: PHP7 이전에는 int 또는 string과 같은 스칼라 유형에 유형 제약 조건을 사용할 수 없었습니다. 특성도 허용되지 않습니다.

PHP 유형 제약 사용:


다음은 공식 예입니다.

<?php
//如下面的类
class MyClass
{
    /**
     * 测试函数
     * 第一个参数必须为 OtherClass 类的一个对象
     */
    public function test(OtherClass $otherclass) {
        echo $otherclass->var;
    }


    /**
     * 另一个测试函数
     * 第一个参数必须为数组 
     */
    public function test_array(array $input_array) {
        print_r($input_array);
    }
}

    /**
     * 第一个参数必须为递归类型
     */
    public function test_interface(Traversable $iterator) {
        echo get_class($iterator);
    }
    
    /**
     * 第一个参数必须为回调类型
     */
    public function test_callable(callable $callback, $data) {
        call_user_func($callback, $data);
    }
}

// OtherClass 类定义
class OtherClass {
    public $var = 'Hello World';
}
?>

함수 호출의 매개변수가 정의된 매개변수 유형과 일치하지 않으면 포착 가능한 치명적인 오류가 발생합니다.

<?php
// 两个类的对象
$myclass = new MyClass;
$otherclass = new OtherClass;

// 致命错误:第一个参数必须是 OtherClass 类的一个对象
$myclass->test('hello');

// 致命错误:第一个参数必须为 OtherClass 类的一个实例
$foo = new stdClass;
$myclass->test($foo);

// 致命错误:第一个参数不能为 null
$myclass->test(null);

// 正确:输出 Hello World 
$myclass->test($otherclass);

// 致命错误:第一个参数必须为数组
$myclass->test_array('a string');

// 正确:输出数组
$myclass->test_array(array('a', 'b', 'c'));

// 正确:输出 ArrayObject
$myclass->test_interface(new ArrayObject(array()));

// 正确:输出 int(1)
$myclass->test_callable('var_dump', 1);
?>

유형 제약 조건은 클래스 멤버 함수뿐만 아니라 함수에서도 사용됩니다.

<?php
// 如下面的类
class MyClass {
    public $var = &#39;Hello World&#39;;
}

/**
 * 测试函数
 * 第一个参数必须是 MyClass 类的一个对象
 */
function MyFunction (MyClass $foo) {
    echo $foo->var;
}

// 正确
$myclass = new MyClass;
MyFunction($myclass);
?>

유형 제약 조건은 NULL 값을 허용합니다.

<?php

/* 接受 NULL 值 */
function test(stdClass $obj = NULL) {

}

test(NULL);
test(new stdClass);

?>

PHP7

스칼라 유형 선언(PHP 7)

스칼라 유형 두 가지가 있습니다. 선언 모드: 필수(기본값) 및 엄격 모드.

이제 다음 유형 매개변수를 사용할 수 있습니다(강제 모드 또는 엄격 모드 여부):


1, 문자열(문자열),

2, 정수(int),

3, 부동 소수점 숫자(float),

4, 부울 값(bool).

PHP5에 도입된 다른 유형(클래스 이름, 인터페이스, 배열 및 콜백 유형)을 확장합니다.

<?php
// 强制模式
function sumOfInts(int ...$ints)
{
     return array_sum($ints);
}
 
var_dump(sumOfInts(2, '3', 4.1));

위 예제는 다음을 출력합니다: int(9)

엄격 모드를 사용하려면 선언 선언 지시문을 파일 상단에 배치해야 합니다. 이는 스칼라가 파일 기반으로 구성 가능하다고 엄격하게 선언됨을 의미합니다. 이 지시문은 매개변수의 유형 선언뿐만 아니라 함수의 반환 값 선언에도 영향을 미칩니다.

추천 관련 기사:

PHP의 유형 제약 조건 소개, PHP 유형 제약 조건 소개

PHP의 유형 제약 조건에 대한 아이디어 코드 공유

유형 제약 조건을 사용하여 PHP 함수 유형을 제한하는 방법

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

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