PHP7.4 더 이상 사용되지 않는 기능

PHP Core

Nested ternary operators without explicit parentheses

중첩 삼항 연산은 명시적으로 괄호를 사용하여 연산 순서를 지정해야 합니다. 이전에는 괄호 없이 사용할 경우 대부분의 경우 왼쪽 결합으로 인해 예상되는 동작이 발생하지 않았습니다.

                  
<?php
1 ? 2 : 3 ? 4 : 5;   // deprecated
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 5); // ok
?>
                  
                

중간 피연산자에 중첩할 때는 괄호가 필요하지 않습니다. 괄호는 항상 모호하지 않고 연관성의 영향을 받지 않기 때문입니다.

1 ? 2 ? 3 : 4 : 5 // ok
                

Array and string offset access using curly braces

중괄호를 사용하는 배열 및 문자열 오프셋 액세스 구문은 더 이상 사용되지 않습니다. $var{$idx} 대신 $var[$idx]를 사용합니다.

(real) cast and is_real() function

(실제) 캐스트는 더 이상 사용되지 않습니다. 대신 (float)를 사용하십시오.

is_real() 함수도 더 이상 사용되지 않습니다. 대신 is_float()를 사용하십시오.

Unbinding $this when $this is used

$this를 사용하는 비정적 클로저의 $this 바인딩 해제는 더 이상 사용되지 않습니다.

parent keyword without parent class

부모가 없는 클래스 내에서 parent를 사용하는 것은 더 이상 사용되지 않으며 향후 컴파일 시간 오류가 발생합니다. 현재 런타임에 상위 항목에 액세스하는 경우에만 오류가 생성됩니다.

allow_url_include INI option

allow_url_include ini 지시문은 더 이상 사용되지 않습니다. 활성화하면 시작 시 사용 중단 알림이 생성됩니다.

Invalid characters in base conversion functions

잘못된 문자를 base_convert(), bindec(), octdec()hexdec()에 전달하면 이제 사용 중단 알림이 생성됩니다. 결과는 유효하지 않은 문자가 존재하지 않는 것처럼 계속 계산됩니다. 선행 및 후행 공백과 0x 유형의 접두사(기본값에 따라 다름)는 계속 허용됩니다.

Using array_key_exists() on objects

객체에 array_key_exists()를 사용하는 것은 더 이상 사용되지 않습니다. 대신 isset() 또는 property_exists()를 사용해야 합니다.

Magic quotes functions

get_magic_quotes_gpc()get_magic_quotes_runtime() 함수는 더 이상 사용되지 않습니다. 그들은 항상 false를 반환합니다.

hebrevc() function

hebrevc() 함수는 더 이상 사용되지 않습니다. nl2br(hebrev($str)) 또는 가급적이면 유니코드 RTL 지원을 사용하여 대체할 수 있습니다.

convert_cyr_string() function

convert_cyr_string() 함수는 더 이상 사용되지 않습니다. mb_convert_string(), iconv() 또는 UConverter 중 하나로 대체할 수 있습니다.

money_format() function

money_format() 함수는 더 이상 사용되지 않습니다. intl NumberFormatter 기능으로 대체할 수 있습니다.

ezmlm_hash() function

ezmlm_hash() 함수는 더 이상 사용되지 않습니다.

restore_include_path() function

restore_include_path() 함수는 더 이상 사용되지 않습니다. ini_restore('include_path')로 대체할 수 있습니다.

Implode with historical parameter order

implode()에 매개변수를 역순으로 전달하는 것은 더 이상 사용되지 않습니다. implode($parts, $glue) 대신 implode($glue, $parts)를 사용하십시오.


COM

대소문자를 구분하지 않는 상수 등록을 사용하여 형식 라이브러리를 가져오는 것은 더 이상 사용되지 않습니다.


Filter

FILTER_SANITIZE_MAGIC_QUOTES는 더 이상 사용되지 않습니다. 대신 FILTER_SANITIZE_ADD_SLASHES를 사용하세요.


Multibyte String

문자열이 아닌 패턴을 mb_ereg_replace()에 전달하는 것은 더 이상 사용되지 않습니다. 현재 문자열이 아닌 패턴은 ASCII 코드포인트로 해석됩니다. PHP 8에서는 패턴이 대신 문자열로 해석됩니다.

인코딩을 세 번째 매개변수로 mb_strrpos()에 전달하는 것은 더 이상 사용되지 않습니다. 대신 0 오프셋을 전달하고 네 번째 매개변수로 인코딩을 전달합니다.


Lightweight Directory Access Protocol

ldap_control_paged_result_response()ldap_control_paged_result()는 더 이상 사용되지 않습니다. 대신 ldap_search()와 함께 페이지 매김 컨트롤을 보낼 수 있습니다.


Reflection

ReflectionType::__toString()에 대한 호출은 이제 사용 중단 알림을 생성합니다. 이 메소드는 PHP 7.1 이후 문서에서 ReflectionNamedType::getName()을 위해 더 이상 사용되지 않지만 기술적인 이유로 사용 중지 알림을 표시하지 않았습니다.

모든 Reflection 클래스의 export() 메서드는 더 이상 사용되지 않습니다. Reflection 개체를 생성하고 대신 문자열로 변환합니다.

                  
<?php
// ReflectionClass::export(Foo::class, false) is:
echo new ReflectionClass(Foo::class), "\n";

// $str = ReflectionClass::export(Foo::class, true) is:
$str = (string) new ReflectionClass(Foo::class);
?>
                  
                

Socket

socket_addrinfo_lookup()에 대한 AI_IDN_ALLOW_UNASSIGNED 및 AI_IDN_USE_STD3_ASCII_RULES 플래그는 glibc의 업스트림 지원 중단으로 인해 더 이상 사용되지 않습니다.