>백엔드 개발 >PHP 튜토리얼 >PHP 7 또는 HHVM없이 PHP에 정적 유형을 가질 수 있습니까?

PHP 7 또는 HHVM없이 PHP에 정적 유형을 가질 수 있습니까?

William Shakespeare
William Shakespeare원래의
2025-02-14 10:08:11857검색

이 기사는 PHP 5의 유형 안전 문제를 탐색하고 솔루션으로 "증강 유형"확장을 소개합니다. PHP 7은 내장 스칼라 유형 선언을 제공하지만이 확장은 이전 PHP 버전에 유사한 기능을 제공합니다.

문제 : PHP 5 Can We Have Static Types in PHP without PHP 7 or HHVM? 의 약한 타이핑 PHP 5의 동적 타이핑은 예상치 못한 동작으로 이어질 수 있습니다. 숫자를 증가 시키도록 설계된 함수를 고려하십시오

이 기능은 다양한 입력 유형을 수용하고 암시 적 유형 변환을 수행합니다. 강력한 유형 확인을 추가하려면 수동 유효성 검사가 필요합니다

PHP 5는 또한 자동 반환 유형 시행이 부족합니다 증강 유형 : PHP 5 솔루션 Box Team의 "Augmented Type"확장자는 PHPDOC 주석을 활용하여 런타임에 유형 안전을 시행합니다. 핵심 수정 또는 포킹을 피합니다 설치 (PHP 5의 경우) :

다음 단계를 따르십시오 (Ubuntu 예제, 다른 시스템에 적응) :

업데이트 시스템 :

의 종속성 설치 : repo를 복제하십시오 확장을 설치하십시오 :
<code class="language-php">function plusone($a) { return $a + 1; }</code>
에서 확장자를 활성화하십시오 (를 사용하여 위치 찾기) : .

또는 전 세계적으로 파일 당 확장자를 활성화하십시오. 사용 :

증강 유형은 유형 선언에 phpdoc을 사용합니다. 예를 들면 :
<code class="language-php">function plusone($a) { if (!is_numeric($a)) throw new InvalidArgumentException("Only numbers!"); return $a + 1; }</code>

이제 integer를

로 전달하면 런타임 오류가 발생합니다. 확장자는 . 를 포함하여 복합 유형 (), 배열 유형 () 및 시행 리턴 유형을 지원합니다. 파일 무시 :

외부 라이브러리의 오류를 방지하려면 또는 지시서를 사용하여 확인 될 파일을 관리합니다.

php 7 이상 :

PHP 7의 내장형 유형 힌트는 새로운 프로젝트의 경우이 확장을 크게 불필요하게 만듭니다. 그러나 "Augmented Type"은 Composite 및 Array 유형 선언과 같은 PHP 7에서는 찾을 수없는 기능을 제공합니다. 런타임 오버 헤드를 추가하고 주로 개발 및 테스트 중에 사용해야한다는 것을 기억하십시오.

.

결론 :

PHP 7은 우수한 유형 안전을 제공하지만 "Augmented Type"확장은 레거시 PHP 5 응용 프로그램에서 유형 안전을 유지하기위한 유용한 솔루션을 제공합니다. 추가 기능은 성능 비용으로 제공되므로 개발 및 테스트에 이상적이지만 생산 환경에는 적합하지 않습니다. 자주 묻는 질문 (FAQ) : (원본 텍스트에 이미 잘 덮여 있으므로 여기에서 반복하지 않을 것입니다. 원래 FAQ 섹션은 포괄적입니다.) .

위 내용은 PHP 7 또는 HHVM없이 PHP에 정적 유형을 가질 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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