PHP 8에 Union Types를 도입할지 여부에 대한 투표가 최근 종료되었습니다. 투표 결과, PHP 개발팀 구성원 중 61명이 찬성표를, 5표가 반대표를 냈습니다.
또한 투표에서 브라더버드가 반대표를 던졌다는 점을 알아두세요~
그래서 투표 결과에 따르면 관계자는 Union Types 2.0이 PHP 8에 도입될 것이라고 확인했습니다.
Union Types에 대한 자세한 토론은 GitHub에서 볼 수 있습니다. Union Types에 대해 간략하게 살펴보겠습니다.
공식 소개에 따르면 Union Types는 단일 유형이 아닌 다양한 유형의 여러 값 수신을 지원합니다. PHP는 현재 두 가지 특수 공용체 유형을 지원합니다.
·특수 유형 구문을 사용하는 Type 또는 null
·array 또는 Traversable, 특수 반복 가능한 유형 만들기
그러나 PHP는 아직 어떤 공용체 유형도 지원하지 않습니다. . 사용하려면 phpdoc 주석의 도움이 필요합니다.
<pre style="margin: 0px; padding: 0px; font-family: "Courier New" !important; font-size: 14px; line-height: 1.5em; white-space: pre-wrap; overflow-wrap: break-word;">class Number { /** * @var int|float number; /** * @param int|float number) { number; } /** * @return int|float */ public function getNumber () { return $this->number; } }
statistics 결과에 따르면 오픈 소스 생태계와 PHP 자체 표준에서는 공용체 유형의 사용이 매우 일반적입니다. 도서관. 공식적으로 PHP가 공용체 유형을 지원할 수 있다면 더 많은 유형 정보를 phpdoc에서 함수 시그니처로 마이그레이션할 수 있게 되며 이는 다음과 같은 공통 이점을 갖습니다.
· 유형이 실제로 시행되므로 오류를 조기에 포착할 수 있습니다.
·필수이기 때문에 유형 정보가 오래되거나 예외적인 경우를 놓칠 가능성이 적습니다.
·리스코프 대체 원칙을 구현하기 위해 상속 과정에서 유형을 확인합니다.
·유형 정보는 리플렉션을 통해 얻을 수 있습니다.
· 구문은 phpdoc보다 간단합니다.
제네릭 다음으로 공용체 유형은 현재 유형 선언 시스템에서 가장 큰 "간격"이라고 할 수 있습니다.
****Proposal****
Union 유형은 T1T2… 구문을 사용하며 허용되는 모든 유형에서 사용할 수 있습니다.
<pre style="margin: 0px; padding: 0px; font-family: "Courier New" !important; font-size: 14px; line-height: 1.5em; white-space: pre-wrap; overflow-wrap: break-word;">class Number { private int|float number): void { number; } public function getNumber (): int|float { return $this->number; } }
지원 유형
PHP에서 지원되는 Union 유형 현재 지원되는 모든 유형: null 유형, nullable 공용체 유형, 거짓 의사 유형, 반복 및 중복 유형.
****유형 구문****
특별한 void 유형을 제외하고 이제 PHP의 유형 구문은 다음 구문으로 설명할 수 있습니다.
<pre style="margin: 0px; padding: 0px; font-family: "Courier New" !important; font-size: 14px; line-height: 1.5em; white-space: pre-wrap; overflow-wrap: break-word;">type: simple_type | "?" simple_type | union_type ; union_type: simple_type "|" simple_type | union_type "|" simple_type ; simple_type: "false" # only legal in unions | "null" # only legal in unions | "bool" | "int" | "float" | "string" | "array" | "object" | "iterable" | "callable" # not legal in property types | "self" | "parent" | namespaced_name ;
PHP 중국어 웹사이트, 다수의 무료 PHP 입문 튜토리얼 , 온라인 학습을 환영합니다!