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
- enchant_broker_set_dict_path() 및 enchant_broker_get_dict_path()는 해당 기능이 libenchant < 1.5 또는 libenchant-2에서 사용할 수 없기 때문에 더 이상 사용되지 않습니다.
- enchant_dict_add_to_personal()은 더 이상 사용되지 않습니다. 대신 enchant_dict_add()를 사용하십시오.
- enchant_dict_is_in_session()은 더 이상 사용되지 않습니다. 대신 enchant_dict_is_added()를 사용하세요.
- enchant_broker_free() 및 enchant_broker_free_dict()는 더 이상 사용되지 않습니다. 대신 개체를 설정 해제하십시오.
-
ENCHANT_MYSPELL
및ENCHANT_ISPELL
상수는 더 이상 사용되지 않습니다.
LibXML/h5>
libxml_disable_entity_loader()는 더 이상 사용되지 않습니다. 이제 libxml 2.9.0이 필요하므로 외부 엔터티 로드는 기본적으로 비활성화되어 있으며 (여전히 취약한) LIBXML_NOENT
가 사용되지 않는 한 이 함수는 XXE 공격으로부터 보호하기 위해 더 이상 필요하지 않습니다. 이 경우 외부 엔티티의 로드를 억제하기 위해 libxml_set_external_entity_loader()를 사용하여 코드를 리팩터링하는 것이 좋습니다.
PGSQL / PDO PGSQL
- 상수
PGSQL_LIBPQ_VERSION_STR
은 이제PGSQL_LIBPQ_VERSION
과 동일한 값을 가지므로 더 이상 사용되지 않습니다. - pgsql 확장의 함수 별칭은 더 이상 사용되지 않습니다. 대신 사용해야 하는 함수는 다음 목록을 참조하세요.
- pg_errormessage() → pg_last_error()
- pg_numrows() → pg_num_rows()
- pg_numfields() → pg_num_fields()
- pg_cmdtuples() → pg_affected_rows()
- pg_fieldname() → pg_field_name()
- pg_fieldsize() → pg_field_size()
- pg_fieldtype() → pg_field_type()
- pg_fieldnum() → pg_field_num()
- pg_result() → pg_fetch_result()
- pg_fieldprtlen() → pg_field_prtlen()
- pg_fieldisnull() → pg_field_is_null()
- pg_freeresult() → pg_free_result()
- pg_getlastoid() → pg_last_oid()
- pg_locreate() → pg_lo_create()
- pg_lounlink() → pg_lo_unlink()
- pg_loopen() → pg_lo_open()
- pg_loclose() → pg_lo_close()
- pg_loread() → pg_lo_read()
- pg_lowrite() → pg_lo_write()
- pg_loreadall() → pg_lo_read_all()
- pg_loimport() → pg_lo_import()
- pg_loexport() → pg_lo_export()
- pg_setclientencoding() → pg_set_client_encoding()
- pg_clientencoding() -> pg_client_encoding()
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
- ReflectionFunction::isDisabled()는 더 이상 비활성화된 함수에 대해 ReflectionFunction을 생성할 수 없기 때문에 더 이상 사용되지 않습니다. 이제 이 메서드는 항상
false
를 반환합니다. - ReflectionParameter::getClass(), ReflectionParameter::isArray() 및 ReflectionParameter::isCallable()은 더 이상 사용되지 않습니다. ReflectionParameter::getType() 및 ReflectionType API를 대신 사용해야 합니다.