>백엔드 개발 >PHP7 >php7 유형 제약의 의미

php7 유형 제약의 의미

藏色散人
藏色散人원래의
2019-11-09 09:19:272839검색

php7 유형 제약의 의미

php7에서 유형 제약의 의미

PHP7 이전에는 함수와 클래스 메서드에서 변수 유형을 선언할 필요가 없었고, 모든 데이터를 전달하고 반환할 수 있었기 때문에 거의 대부분의 호출이 발생했습니다. 반환된 데이터 유형이 정규화되었는지 확인합니다.

이 문제를 해결하기 위해 PHP7에서는 유형 선언을 도입했습니다.

현재 선언할 수 있는 변수에는 형식 매개변수와 반환 값의 두 가지 유형이 있습니다.

지원되는 유형에는 정수, 부동 소수점, 문자열 및 부울이 포함됩니다.

다음 코드는

<?php
function study(int $get)
{
    return $get;
}
var_dump(study(&#39;ddd&#39;));

코드 길이를 아끼기 위해 OOP는 쓰지 않고 함수만 예시로 사용하겠습니다.

이 함수는 매개변수 유형이 int이고 호출 시 'ddd' 문자열이 전달되도록 지정하므로 이 코드를 실행하면 치명적인 오류가 발생합니다.

다음과 같이 PHP는 항상 그렇게 심각하지 않습니다.

<?php
function study(bool $get)
{
    return $get;
}
var_dump(study(&#39;ddd&#39;));

지정된 매개 변수 유형은 bool이지만 수신 문자열은 true로 변환되고 실행 후 출력 결과는 bool(true)

입니다.

제약 유형을 강제로 적용하려면 파일 헤드에 선언 문을 추가하면 됩니다.

<?php
declare(strict_types = 1);
function study(bool $get)
{
    return $get;
}
var_dump(study(&#39;ddd&#39;));

이때에도 치명적인 오류가 발생합니다. 지정된 매개변수 유형은 bool이지만 전달된 매개변수 유형이 아니기 때문입니다. 문자열이며 ' 그냥 ddd를 변경하세요'만 true와 false로 설정되며 1이나 0도 아닙니다.

다음으로 반환 유형 선언을 소개하겠습니다.

<?php
declare(strict_types = 1);
function study(bool $get) : int
{
    return (int)$get;
}
var_dump(study(true));

형식 매개변수의 괄호 뒤에 콜론과 유형을 추가하여 메소드 반환 값의 유형을 지정합니다. 지정된 유형이 반환되는 유형이 됩니다.

declare의 영향도 받습니다.

유형 필수 제약 조건이 없으면 PHP는 반환된 데이터를 지정된 유형의 데이터로 변환한 후 반환합니다. 현재는 문자열을 강제로 적용할 수 없는 경우에만 오류가 보고됩니다. int로 변환됩니다.

필수 제약 조건이 지정되면 PHP는 유형 변환을 수행하지 않지만 유형이 다르면 오류가 보고됩니다.

또한 반환 값 유형은 개체 이름을 지정할 수도 있으며 지정된 개체의 인스턴스가 반환되어야 합니다. 예:

<?php
class person
{
    private function __construct($name)
    {
        $this->name = $name;
    }
    static function instance(string $name) : person
    {
        return new self($name);
    }
}
person::instance(&#39;zhangsan&#39;);

이것은 PHP7의 새로운 기능 중 하나인 유형 선언입니다.

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

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