더 이상 사용되지 않는 기능
PHP Core
Implementing Serializable without __serialize() and __unserialize()
버전 7.4 이전의 PHP에 대한 지원이 제공되지 않는 경우 새 메소드만 구현하거나 둘 다 구현해야 합니다.
Passing null
to non-nullable parameters of built-in functions
기본 제공 함수의 스칼라 유형은 기본적으로 널 입력 가능하며, 이 동작은 스칼라 유형을 명시적으로 널 입력 가능으로 표시해야 하는 사용자 정의 함수의 동작과 일치하도록 더 이상 사용되지 않습니다.
<?php
var_dump(str_contains("foobar", null));
// Deprecated: Passing null to parameter #2 ($needle) of type string
// is deprecated
?>
Implicit incompatible float to int conversions
float를 int로 암시적으로 변환하여 정밀도를 떨어뜨리는 것은 이제 더 이상 사용되지 않습니다. 이것은 배열 키, 강제 모드의 int 유형 선언 및 int에서 작업하는 연산자에 영향을 줍니다.
<?php
$a = [];
$a[15.5]; // deprecated, as key value loses the 0.5 component
$a[15.0]; // ok, as 15.0 == 15
?>
Calling a static element on a trait
정적 메서드를 호출하거나 트레이트에서 직접 정적 속성에 액세스하는 것은 더 이상 사용되지 않습니다. 정적 메서드와 속성은 특성을 사용하는 클래스에서만 액세스해야 합니다.
Returning a non-array from __sleep()
__sleep()에서 배열이 아닌 값을 반환하면 이제 진단이 생성됩니다.
Returning by reference from a void function
<?php
function &test(): void {}
?>
이러한 함수는 모순되며 호출될 때 이미 다음 E_NOTICE
를 내보냅니다. 변수 참조만 참조로 반환되어야 합니다
.
Autovivification from false
Autovivification은 값에 추가할 때 새 배열을 만드는 프로세스입니다. Autovivification은 스칼라 값에서 금지되지만 false
는 예외였습니다. 이제 더 이상 사용되지 않습니다.
<?php
$arr = false;
$arr[] = 2; // deprecated
?>
메모: null
및 undefined 값의 자동 생존은 여전히 허용됩니다.
<?php
// From undefined
$arr[] = 'some value';
$arr['doesNotExist'][] = 2;
// From null
$arr = null;
$arr[] = 2;
?>
ctype
Verifying non-string arguments
문자열이 아닌 인수를 전달하는 것은 더 이상 사용되지 않습니다. 앞으로 인수는 ASCII 코드 포인트 대신 문자열로 해석됩니다. 의도한 동작에 따라 인수를 문자열로 캐스팅하거나 chr()을 명시적으로 호출해야 합니다. 모든 ctype_*()
함수가 영향을 받습니다.
Date
date_sunrise() 및 date_sunset()은 date_sun_info()를 위해 더 이상 사용되지 않습니다.
strptime()은 더 이상 사용되지 않습니다. 대신 date_parse_from_format()(로캘 독립적 구문 분석의 경우) 또는 IntlDateFormatter::parse()(로캘 종속 구문 분석의 경우)를 사용합니다.
strftime() 및 gmstrftime()은 더 이상 사용되지 않습니다. 대신 date()(로케일 독립적 구문 분석의 경우) 또는 IntlDateFormatter::format()(로케일 종속 구문 분석의 경우)을 사용하십시오.
Filter
FILTER_SANITIZE_STRING
및 FILTER_SANITIZE_STRIPPED
필터는 더 이상 사용되지 않습니다.
filter.default INI 지시문은 더 이상 사용되지 않습니다.
GD
imageopenpolygon() 및 imagefilledpolygon()의 num_points는 더 이상 사용되지 않습니다.
Hash
mhash(), mhash_keygen_s2k(), mhash_count(), mhash_get_block_size() 및 mhash_get_hash_name()은 더 이상 사용되지 않습니다. 대신 hash_*()
함수를 사용하십시오.
IMAP
NIL 상수는 더 이상 사용되지 않습니다. 대신 0
을 사용하십시오.
Intl
bool 인수를 사용하여 IntlCalendar::roll()을 호출하는 것은 더 이상 사용되지 않습니다. true
및 false
대신 각각 1
및 -1
을 사용합니다.
Multibyte String
인수 없이 mb_check_encoding()을 호출하는 것은 더 이상 사용되지 않습니다.
MySQLi
mysqli_driver::$driver_version 속성은 더 이상 사용되지 않습니다. 의미가 없고 구식입니다. 대신 PHP_VERSION_ID
를 사용하세요.
mysqli
인수를 사용하여 mysqli::get_client_info() 또는 mysqli_get_client_info()를 호출하는 것은 더 이상 사용되지 않습니다. 클라이언트 라이브러리의 버전 정보를 얻으려면 인수 없이 mysqli_get_client_info()를 호출하십시오.
mysqli::init() 메소드는 더 이상 사용되지 않습니다. parent::init() 호출을 parent::__construct()로 교체하십시오.
OCI8
oci8.old_oci_close_semantics INI 지시문은 더 이상 사용되지 않습니다.
ODBC
odbc_result_all()은 더 이상 사용되지 않습니다.
PDO
PDO::FETCH_SERIALIZE
페치 모드는 더 이상 사용되지 않습니다.
PgSQL
모든 pgsql_*()
함수에 연결 인수를 전달하지 않는 것은 더 이상 사용되지 않습니다.
SOAP
SoapClient::__construct()의 ssl_method
옵션은 SSL 스트림 컨텍스트 옵션을 위해 더 이상 사용되지 않습니다.
Standard
객체에서 key(), current(), next(), prev(), reset() 또는 end()를 호출하는 것은 더 이상 사용되지 않습니다. 먼저 객체에 get_mangled_object_vars()를 사용하거나 ArrayIterator를 사용하십시오.
auto_detect_line_endings INI 지시문은 더 이상 사용되지 않습니다. 필요한 경우 "\r"
줄 바꿈을 대신 수동으로 처리하십시오.
FILE_BINARY
및 FILE_TEXT
상수는 더 이상 사용되지 않습니다. 그들은 효과가 없었습니다.