>백엔드 개발 >PHP 튜토리얼 >PHP 7.2의 새로운 기능: 매개변수 유형 선언(코드 포함)

PHP 7.2의 새로운 기능: 매개변수 유형 선언(코드 포함)

不言
不言원래의
2018-08-08 16:55:346133검색

php7.2 버전에는 더 나은 코드를 작성할 수 있는 새로운 기능, 개선 사항이 포함되어 있습니다. 다음 기사에서는 php7.2의 새로운 기능인 매개변수 유형 선언을 소개하겠습니다. 텍스트 내용을 자세히 살펴보세요.

매개변수 유형 선언

PHP 5부터 함수 선언에 전달될 것으로 예상되는 매개변수 유형을 지정할 수 있습니다. 주어진 값의 유형이 잘못된 경우 PHP는 오류를 발생시킵니다. 매개변수 유형 선언(유형 힌트라고도 함)은 함수나 클래스 메서드에 전달될 것으로 예상되는 변수 유형을 지정합니다.

예는 다음과 같습니다.

class MyClass {
    public $var = 'Hello World';
}

$myclass = new MyClass;

function test(MyClass $myclass){
    return $myclass->var;
}

echo test($myclass);

이 코드에서 테스트 함수에는 MyClass 인스턴스가 필요합니다. 잘못된 데이터 유형은 다음과 같은 치명적인 오류를 발생시킵니다:

Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of MyClass, string given, called in /app/index.php on line 12 and defined in /app/index.php:8

PHP 7.2 유형 힌트는 객체 데이터 유형과 함께 사용될 수 있으며, 이러한 개선으로 일반 객체를 함수나 메소드의 매개변수로 선언할 수 있습니다. 예는 다음과 같습니다.

class MyClass {
    public $var = '';
}

class FirstChild extends MyClass {
    public $var = 'My name is Jim';
}
class SecondChild extends MyClass {
    public $var = 'My name is John';
}

$firstchild = new FirstChild;
$secondchild = new SecondChild;

function test(object $arg) {
    return $arg->var;
}

echo test($firstchild);

echo test($secondchild);

이 예에서는 테스트 함수를 두 번 호출하여 각 호출마다 다른 객체를 전달합니다. 이전 PHP 버전에서는 불가능했습니다.

객체 반환 유형 선언

매개변수 유형 선언이 함수 매개변수의 예상 유형을 지정하는 경우 반환 유형 선언은 반환 값의 예상 유형을 지정합니다.

반환 유형 선언은 함수가 반환할 것으로 예상되는 변수 유형을 지정합니다.

PHP 7.2부터 객체 데이터 유형에 대한 반환 유형 선언을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

class MyClass {
    public $var = 'Hello World';
}

$myclass = new MyClass;

function test(MyClass $arg) : object {
    return $arg;
}

echo test($myclass)->var;

이전 PHP 버전에서는 다음과 같은 치명적인 오류가 발생했습니다.

Fatal error: Uncaught TypeError: Return value of test() must be an instance of object, instance of MyClass returned in /app/index.php:10

물론 PHP 7.2에서는 이 코드가 'Hello World'로 응답합니다.

매개변수 유형 은혜 선언

PHP는 현재 하위 클래스와 상위 클래스 또는 인터페이스 간의 매개변수 유형 차이를 허용하지 않습니다. 그게 무슨 뜻이에요?
다음 코드를 고려하세요.

<?php
class MyClass {
    public function myFunction(array $myarray) { /* ... */ }
}

class MyChildClass extends MyClass {
    public function myFunction($myarray) { /* ... */ }
}

여기서는 하위 클래스의 매개변수 유형을 생략했습니다. PHP 7.0에서 이 코드는 다음과 같은 경고를 생성합니다:

Warning: Declaration of MyChildClass::myFunction($myarray) should be compatible with MyClass::myFunction(array $myarray) in %s on line 8

PHP 7.2부터 코드를 손상시키지 않고 하위 클래스에서 유형을 생략할 수 있습니다. 이 제안을 통해 모든 하위 클래스를 업데이트하지 않고도 라이브러리에서 유형 힌트를 사용하도록 클래스를 업그레이드할 수 있습니다.

목록 구문의 후행 쉼표

배열의 마지막 항목 뒤의 후행 쉼표는 PHP에서 유효한 구문이며 새 항목을 쉽게 추가하고 쉼표 누락으로 인한 구문 분석 오류를 방지하기 위해 때때로 이를 사용하는 것이 좋습니다. PHP 7.2부터 그룹화 네임스페이스에 후행 쉼표를 사용할 수 있습니다.

추천 관련 글 :

PHP5.5 ~ PHP7.2 새로운 기능 모음 - 개인 글

PHP7.2 버전 성능 소개

PHP7.2 새로운 기능

위 내용은 PHP 7.2의 새로운 기능: 매개변수 유형 선언(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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