이 글에서는 PHP7.2 버전의 성능을 주로 소개하여 모든 사람이 PHP7.2에 대해 더 명확하게 이해할 수 있도록 도움을 드리고자 합니다.
Core:
함수는 gettype()을 반환합니다. 자원(닫음) , 이전의 알 수 없는 유형을 대체합니다.
__PHP_Incomplete_Class 클래스 객체의 경우 is_object() 함수는 true를 반환합니다.
Netware OS에 대한 지원이 제거되었습니다.
배열 유형을 객체 유형((object) 또는 settype())으로 변환하면 정수 키가 속성 이름으로 변환되는 문제가 해결됩니다. 이전 버전의 숫자 키는 속성 이름의 문제로 사용할 수 없습니다.
객체 유형이 배열 유형으로 변환되는 경우((array) 또는 settype()), 객체의 속성이 배열에 매핑되는 경우(get_object_vars( )) 정수 속성이 숫자 키로 변환되어 이전 버전에서 정수 속성에 액세스할 수 없었던 문제가 해결되었습니다.
정의되지 않은 상수에 대한 부적격 참조는 경고 수준 오류를 발생시켜 이전 알림 수준을 대체하고 이후 버전은 오류 수준 오류가 됩니다.
지원되는 최소 Windows 버전은 Windows 7 및 Windows Server 2008 R2입니다.
기본 trait 속성 값의 호환성 검사 동작을 취소합니다.
object은 클래스 이름으로 사용되지 않습니다.
BcMath
은 fmod() 함수와 동일합니다. bcmod() 함수는 모듈을 취소합니다. o 연산(%), 즉 10진수 값 부분적으로 정수로 잘립니다. 예: bcmod('4', '3.5')는 1 대신 0.5를 반환합니다.
Hash
hash_hmac(), hash_hmac_file(), hash_p bk df2() 및 hash_init()(옵션 매개변수 HASH_HMAC), 이러한 함수는 더 이상 비암호화 해시 함수를 지원하지 않습니다.
JSON
json_decode() 함수의 두 번째 매개변수 assoc이 null인 경우 옵션은 옵션에서 JSON_OBJ를 지원합니다. ECT_AS_ARRAY가 활성화됩니다. 이전 버전에서는 이 매개변수가 무시되었습니다.
Session
제거됨 register_globals 관련 코드, "!"는 $_SESSION에서 사용할 수 있습니다. 키 이름에.
session은 세션 상태를 올바르게 관리하고 잘못된 작업을 금지하는 데 사용됩니다. 이 변경 사항은 코드에 문제가 있을 때 실행됩니다. 불행하게도 이 문제가 발생하면 코드에 문제가 있다는 의미입니다. 이러한 함수는 올바른 세션 상태를 설정하거나 반환하는 데 사용됩니다.
session_unset(), session_write_close()/session_commit(), session_abort(), session_reset(), 이 함수는 절대 값을 반환하지 않습니다. 반환된 부울 값이 됩니다. 빈 매개변수를 허용하고 이러한 매개변수가 비어 있는지 확인합니다.
session_start(), session_set_cookie_params(), session_name(), session_module_name() , session_set_save_handler(), session_regenerate_id( ), session_cache_limiter(), session_cache_expire(), session_unset(), session_destroy(), session_write_close()/session_commit() , session_reset(), 이 함수는 유효하지 않은 세션 상태 및 http 헤더 상태를 비활성화하고 올바른 부울 값 또는 숫자 값을 반환합니다.
session.name, session.save_path, session.cookie_lifetime,session.cookie_path, session.cookie_domain, session. Cookie_httponly, Session.cookie_secure, Session.use_cookies, Session.use_only_Cookies, Session.use_mode er_check , Session.cache_limiter , session .cache_expire, session.lazy_write, session.save_handler, session.serialize_handler, session. session.gc_pior, session.gc_maxlifetime , 이러한 ini 값 설정은 ini_set() 함수에 의해 성공적으로 호출되어야 합니다. 잘못된 ini 수정 작업은 성공하지 못합니다. 세션을 올바르게 관리할 수 있으므로(
) E_ERROR 수준의 일부 오류 메시지가 E_WARNING 수준으로 변환됩니다. 세션은 더 이상 유효하지 않고 쓸모없는 세션으로 초기화되지 않습니다.
session_name(을 통해) ), session_module_name(), session_save_path(), session_cache_limiter() 및 session_cache_expire() 이 함수들) .
이제 이러한 올바른 동작은 CLI 명령줄 모드의 관리 세션 상태에 영향을 미칩니다. 웹 애플리케이션에서와 같이 출력 버퍼링을 사용하면 cli 스크립트의 문제가 해결됩니다.
버전 7.1 이후 64비트 시스템에서 동일한 시드에 대해 mt_rand()
및 rand() 버전 7.1 임의의 숫자 생성 순서는 다를 수 있습니다.
2. 새로운 기능
Core
상속된 추상 클래스가 상속된 추상 클래스의 추상 메서드를 재정의하도록 허용합니다.
그룹화된 네임스페이스에 후행 쉼표를 허용합니다.
객체 유형의 주석이 허용됩니다.
DBA
LMDB 백엔드에 대한 지원을 구현했습니다.
JSON
json_encode() 및 json_decode()에서 에 대한 지원이 추가되었습니다. JSON_INVALID_IGNORE 및 JSON_INVALTD_UTF8_SUBSTITUTE 지원, 이전에 유효하지 않은 UTF-8 인코딩 유형을 대체합니다.
OCI8
Oracle 데이터베이스의 TAF(투명한 애플리케이션 장애 조치)에 대한 지원이 추가되었습니다.
PCRE
로컬 PCRE_DUPNAMES 옵션을 수정하기 위해 내부 옵션(j)을 추가했습니다.
Sodium
새로운 암호화 확장 프로그램.
SQLite3
은 BLOB 작성을 구현합니다.
Standard
libargon2로 PHP를 컴파일할 때 단순화된 해시 비밀번호 API가 Argon2를 지원하도록 업데이트되었습니다.
Windows 플랫폼은 proc_nice() 기능을 지원합니다.
Zip
암호화된 아카이브 읽기/쓰기, libzip 1.2.0에 따라 다름, 새 방법: ZipArchive::setEncryptionName($name, $method[,$password ] ); ZipArchive:: setEncryptionIndex($index, $method[,$password]); 새로운 상수: ZipArchive:: EM_AES_128 ZipArchive::EM_AES_256
zip 스트림 컨텍스트에서 "비밀번호"를 수락합니다.
ZipArchive는 ZipArchive::count() 메서드를 추가하여 가산성을 구현합니다.
3. SAPI 모듈 변경
4. 더 이상 사용되지 않는 기능
다음은 php8.0 버전에서 더 이상 사용되지 않는 기능입니다.
Core
프로필 추적 오류는 삭제됩니다.
__autoload()은 더 이상 사용되지 않으며 대신 spl_autoload_register()를 사용합니다.
(unset)은 더 이상 사용되지 않습니다. 이 변경 사항은 unset($var)의 언어 구조에 영향을 미치지 않습니다.
create_function() 함수는 더 이상 사용되지 않으며 대신 익명 함수를 사용합니다.
each() 함수 구조는 폐기되고 foreach() 루프로 대체됩니다.
Exif
read_exif_data()은 더 이상 사용되지 않습니다. 대신 exif_read_data()를 사용하세요.
GD
png2wbmp() 및 jpeg2wbmp()은 더 이상 사용되지 않습니다.
GMP
gmp_random()은 더 이상 사용되지 않습니다. 대신 gmp_random_bits() 또는 ()를 사용하세요.
Intl
INTL_IDNA_VARIANT_2003은 INTL_IDNA_VARIANT_UTS46을 위해 더 이상 사용되지 않습니다. 대신.
Mbstring
mbstring.func_overload에 대한 구성 파일은 더 이상 사용되지 않습니다. 인수 없이
parse_str()호출
은 더 이상 사용되지 않으며 대신 정규식을 사용합니다. 5.
Standard
기능이 변경되었습니다.
,password_hash()는 Argon2 해시를 생성할 수 있습니다.
PASSWORD_ARGON2I를 사용할 때 기본적으로 memory_cost, time_cost 옵션이 설정될 수 있습니다. 이러한 옵션의 기본값은
PASSWORD_ARGON2_DEFAULT_MEMORY_COSTPASSWORD_ARGON2_DEFAULT_TIME_COST 및 PASSWORD_ARGON2_DEFAULT_THREADS입니다. password_verify()는 Argon2 해시를 확인할 수 있습니다.
password_get_info()password_needs_rehash()는 Argon2 해시를 허용할 수 있습니다.
mail()/mb_send_mail()은 배열 $extra_header을 허용합니다. 배열 매개변수는 RFC 2822에 대해 확인됩니다. 배열 형식: php $extra_headers = [ 'Header-Name' => 'Header value', 'Multiple' => ['One header', 'Another header'], 'Multiline' = "FirstLinern SecondLine", ];
잘못된 매개변수가 전달되면 count() 함수가 경고를 발생시킵니다. 빅엔디안 및 리틀엔디안 바이트 순서에서
pack()unpack()은 float 및 double 유형을 지원합니다.
number_format() 함수는 0 값에 음수 기호가 포함되지 않도록 합니다. XML
utf8_encode()
및함수가 문자열로 표준 확장으로 이동되었습니다.
6. 새로운 기능 Core
추가됨 stream_istty()
.
sapi_windows_vt100_support().
DomNodeList
은 Countable을 구현하고를 추가합니다. DOMNamedNodeMap은 DOMNamedNodeMap::count()을 추가하여 Countable을 구현합니다. FTP 추가됨 ftp_append(). GD 이 imagesetclip() 및 imagegetclip()을 추가했습니다. imageopenpolygon()을 추가했습니다. imagesolution()을 추가했습니다. imagecreatefrombmp() 및 imagebmp()을 추가했습니다. Hash 이 추가되었습니다. hmac_algos(). Mbstring 이 mb_chr() 및 mb_ord()을 추가했습니다. 추가됨 mb_scrub. OCI8 추가됨 oci_register_taf_callback() 및 oci_unregister_taf_callback() Oracle 데이터베이스의 TAF(투명한 애플리케이션 장애 조치)를 지원합니다. Sockets 추가됨 socket_addrinfo_lookup(), socket_addrinfo_connect() , socket_addrinfo_bind() 및 socket_addrinfo_explain() . SPL 추가됨 spl_object_id(). 7. 새로운 클래스 및 인터페이스 8. 확장 및 SAPI Mcypt 더 이상 사용되지 않는 mcrypt 확장 프로그램이 PECL로 이동되었습니다. libmcrypt는 2007년 이후 유지관리되지 않았으므로 이 확장 프로그램을 계속 사용하지 않는 것이 좋습니다. 9. 확장 기능에 대한 기타 변경 사항 EXIF Sony, Pentax, 미놀타, 시그마/포베온, AGFA, 교세라, 리코 & 엡손. exif_read_data() 및 exif_t humbnail()은 스트림을 첫 번째 매개변수로 전달하는 것을 지원합니다. GD --enable-gd-native-ttf 구성 옵션이 제거되었습니다. imagegd()는 트루컬러 이미지를 트루컬러 이미지로 저장하여 이전 변환을 팔레트로 대체합니다. 시스템 libgd로 컴파일할 때 mageantialias()도 지원됩니다. Mbstring mb_check_encoding()은 배열 매개변수를 허용하고 해당 키와 값을 재귀적으로 확인합니다. mb_convert_encoding()은 해당 값의 인코딩이 재귀적으로 변환될 수 있는 배열 매개변수를 허용합니다. PDO_OCI --with-pdo-oci 구성 구문은 더 이상 Oracle 클라이언트에서 사용할 수 없습니다. pdo_sqlite sqlite3_prepare_v2() 및 sqlite3_close_v2()를 사용하세요. 이전 기능을 대체합니다. 10. 새로운 전역 상수 Core PHP_FLOAT_DIG PHP_FLOAT_EPSILON PHP_FLOAT_MIN PHP_FLOAT_MAX PHP_OS_FAMILY Fileinfo FILEINFO_EXTENSION GD IMG_EFFECT_MULTIPLY IMG_BMP PCRE PREG_UNMATCHED_AS_NULL 표준: PASSWORD_ARGON2_DEFAULT_MEMORY_COST PASSWORD_ARGON2_DEFAULT_TIME_COST PASSWORD_ARGON2_DEFAULT_THREADS PASSWORD_ARGON2I 11 INI 파일 처리 변경 사항 sql.safe_ 모드 이 INI 옵션이 제거되었습니다. realpath_cache_size 기본값은 4096k입니다. opcache.fast_shutdown 이 INI 옵션이 제거되었습니다. fast_shutdown 처리 변형이 PHP 커널에 통합되었으며 프로덕션 환경에서 기본적으로 활성화됩니다. 12. Windows 지원 VT100 콘솔 모드를 지원합니다. 13. 기타 변경 사항 컴파일 시스템 최소 지원 버전은 2.64입니다. 관련 권장 사항: