PHP7.4는 PHP 언어의 중요한 버전이며 2019 년 11 월에 출시되었습니다. PHP7.3과 비교하여 PHP7.4는 새로운 기능과 성능 최적화를 제공하고 알려진 보안 취약점 및 버그를 수정합니다.
PHP7.4로 업그레이드하면 일부 호환성 문제가 발생할 수 있습니다. 이러한 문제는 일반적으로 PHP7.4에 도입 된 새로운 기능과 코드 변경으로 인해 발생합니다. 일반적인 호환성 문제는 다음과 같습니다.
일부 기능은 PHP7.4 또는 변경된 매개 변수 유형에 의해 삭제 될 수 있으므로 이전 코드가 제대로 작동하지 않습니다. 다음 예는이 문제를 보여줍니다.
<span class="fun">function foo (int $ bar) {// ...} foo ( 'bar'); // php 경고 : strpos ()는 매개 변수 1이 string, int가 될 것으로 기대합니다.</span>
해결책은 함수의 매개 변수 유형 선언을 업데이트하는 것입니다. 예를 들어, Union 유형은 여러 유형의 매개 변수를 허용하는 데 사용될 수 있습니다.
<span class="fun">함수 foo (문자열 | int $ bar) {// ...} foo ( 'bar'); // ok foo (42); // 좋아요</span>
php7.4에서, __line__, __class__ 및 __file__와 같은 일부 마법 상수의 값은 새로운 레지스트리 구현으로 인해 무효화 될 수 있습니다. 예를 들어:
<span class="fun">echo __file__; // php7.4 전에 :/path/to/file.php // php7.4 이후 : 알 수 없음</span>
해결책은 __file__ 대신 __dir__ 또는 dirname (__ file__)을 사용하는 것입니다.
PHP7.4에서 네임 스페이스가 클래스 이름과 동일하면 구문 분석 오류가 발생할 수 있습니다. 예를 들어:
<span class="fun">네임 스페이스 foo; 클래스 바 {// ...} function bar () {// ...}</span>
PHP7.4에서는 function bar ()를 호출 할 때 Backslash (\)를 사용할 필요가 없지만 Php5.x에서는 Backslash를 사용해야합니다.
PHP7.4에서 URL이 문자열로 함수로 전달되면 포트 번호는 NULL로 구문 분석 될 수 있습니다. 예를 들어:
<span class="fun">$ url = 'https://www.example.com:80/'; $ parts1 = parse_url ($ URL); print_r ($ parts1); // php7.4 전 : 배열 ([scheme] => https [host] => www.example.com [port] => 80 [path] => /) // php7.4 이후 : 배열 ([scheme] => https [hot] => www.example.com [port] => null [path] => /)</span>
해결책은 포트 번호를 정수로 변환하거나 정사각형 괄호에 넣는 것입니다.
다음은 개발자가 PHP7.4의 호환성 문제를 신속하게 수정하는 데 도움이되는 몇 가지 효과적인 솔루션입니다.
PHP7.4로 업그레이드하기 전에 포괄적 인 코드 검토 및 테스트를 수행하여 코드가 새 버전에서 올바르게 작동하는지 확인하는 것이 좋습니다. 단위 테스트, 통합 테스트 및 성능 테스트와 같은 방법을 사용하여 잠재적 오류를 감지 할 수 있습니다.
호환되지 않는 코드의 경우 PHP7.4의 새로운 기능에 맞게 코드를 업데이트하십시오. 예를 들어, Union 유형의 PHP7.4를 사용하여 다형 매개 변수를 지원하지 않는 함수를 대체 할 수 있습니다.
<span class="fun">함수 foo (문자열 | int $ bar) {// ...} foo ( 'bar'); // ok foo (42); // 좋아요</span>
코드를 수정하는 것 외에도 호환성 라이브러리를 사용하여 업그레이드 프로세스 중에 발생하는 문제를 해결할 수 있습니다. 예를 들어, PHP-CS-Fixer를 사용하여 코드에서 스타일링 및 서식 문제를 자동으로 수정할 수 있습니다.
PHP7.4로 업그레이드 할 때는 주로 새로운 기능 및 코드 변경으로 인해 호환성 문제가 발생할 수 있습니다. 이러한 문제는 코드 검토, 테스트, 코드 업데이트 또는 호환성 라이브러리를 사용하여 코드가 새 버전에서 원활하게 실행되도록하여 효과적으로 해결할 수 있습니다.