PHP8.0 더 이상 사용되지 않는 기능

PHP Core

  • 기본값이 있는 매개변수 뒤에 필수 매개변수가 오는 경우 기본값은 적용되지 않습니다. 이것은 PHP 8.0.0에서 더 이상 사용되지 않으며 일반적으로 기능 변경 없이 기본값을 삭제하여 해결할 수 있습니다.
                          
    <?php
    function test($a = [], $b) {} // Before
    function test($a, $b) {}      // After
    ?>
                          
                        

    이 규칙에 대한 한 가지 예외는 Type $param = null 형식의 매개변수입니다. 여기서 null 기본값은 형식을 암시적으로 null 허용으로 만듭니다. 이 사용은 계속 허용되지만 명시적 nullable 형식을 대신 사용하는 것이 좋습니다.

                          
    <?php
    function test(A $a = null, $b) {} // Still allowed
    function test(?A $a, $b) {}       // Recommended
    ?>
                          
                        
  • exclude_disabled가 명시적으로 false로 설정된 get_defined_functions() 호출은 더 이상 사용되지 않으며 더 이상 효과가 없습니다. get_defined_functions()는 비활성화된 기능을 포함하지 않습니다.

Enchant


LibXML/h5>

libxml_disable_entity_loader()는 더 이상 사용되지 않습니다. 이제 libxml 2.9.0이 필요하므로 외부 엔터티 로드는 기본적으로 비활성화되어 있으며 (여전히 취약한) LIBXML_NOENT가 사용되지 않는 한 이 함수는 XXE 공격으로부터 보호하기 위해 더 이상 필요하지 않습니다. 이 경우 외부 엔티티의 로드를 억제하기 위해 libxml_set_external_entity_loader()를 사용하여 코드를 리팩터링하는 것이 좋습니다.


PGSQL / PDO PGSQL


Standard Library

  • true 또는 false를 반환하는 정렬 비교 함수는 이제 사용 중단 경고를 표시하며 0보다 작거나 같거나 큰 정수를 반환하는 구현으로 대체되어야 합니다.
                          
    <?php
    // Replace
    usort($array, fn($a, $b) => $a > $b);
    // With
    usort($array, fn($a, $b) => $a <=> $b);
    ?>
                          
                        

Zip

  • 빈 파일을 ZipArchive로 사용하는 것은 더 이상 사용되지 않습니다. Libzip 1.6.0은 더 이상 빈 파일을 유효한 zip 아카이브로 허용하지 않습니다. 기존 해결 방법은 다음 버전에서 제거됩니다.
  • Zip의 절차적 API는 더 이상 사용되지 않습니다. 대신 ZipArchive를 사용하십시오. 모든 항목에 대한 반복은 ZipArchive::statIndex() 및 for 루프를 사용하여 수행할 수 있습니다.
                          
    <?php
    // iterate using the procedural API
    assert(is_resource($zip));
    while ($entry = zip_read($zip)) {
        echo zip_entry_name($entry);
    }
    
    // iterate using the object-oriented API
    assert($zip instanceof ZipArchive);
    for ($i = 0; $entry = $zip->statIndex($i); $i++) {
        echo $entry['name'];
    }
    ?>
                          
                        

Reflection