PHP8.2는 PHP 언어 현대화 과정에서 중요한 이정표입니다. 흥미로운 새로운 기능과 개선 사항 외에도 PHP 8.2는 언어를 단순화하고, 동적 클래스 속성에 대한 지원을 제거하고, 최적이 아닌 특정 ini 구성이 발견될 때 경고를 표시하고, 배열 정렬을 위한 PHP 레거시 PHP 동작에 영향을 미치는 여러 가지 수정 사항을 수정합니다. 특정 유형의 문자열 변환/인코딩 작업. [추천 학습: PHP 비디오 튜토리얼]
PHP8.2는 PHP 유형 시스템의 여러 단점과 한계를 해결하여 PHP 애플리케이션이 더 나은 유형 안전성을 채택할 수 있도록 합니다. true 유형 추가, null 및 false를 독립 유형으로 사용할 수 있도록 허용, DNF 유형(일반 구문 분석) 지원 등이 포함됩니다.
PHP 8.2는 별도의 패러다임 유형을 지원하며 이제 매개변수, 반환 값 및 속성을 정확하고 표현적인 선언으로 정의할 수 있는 공용체 유형과 통신 유형을 결합할 수 있습니다.
php8.2 이전
class Foo { public function bar(mixed $entity) { if ((($entity instanceof A) && ($entity instanceof B)) || ($entity === null)) { return $entity; } throw new Exception('Invalid entity'); } }
이제
class Foo { public function bar((A&B)|null $entity) { return $entity; } }
는
function alwaysReturnsFalse(): false {} function alwaysReturnsNull(): null {} function alwaysReturnsTrue(): true {}
readonly class User { public string $username; public string $uid; }
모든 속성은 자동으로
trait Foo { public const CONSTANT = 1; } class Bar { use Foo; } var_dump(Bar::CONSTANT); // 1 var_dump(Foo::CONSTANT); // Error
우리는 매개변수나 속성에 비밀번호, 비밀 키 또는 기타 민감한 정보를 정의하는 경우가 많습니다. 이 값은
예:
function passwordHash(#[\SensitiveParameter] string $password) { debug_print_backtrace(); } passwordHash('hunter2');
인쇄된 내용은 다음과 같습니다.
array(1) { [0]=> array(4) { ["file"]=> string(38) "..." ["line"]=> int(9) ["function"]=> string(3) "foo" ["args"]=> array(1) { // [0]=> string(38) "hunter2" 这一行不会被打印出来 [0]=> object(SensitiveParameterValue)#1 (0) {} } } }
解析
将
ini_parse_quantity('256M'); // 268435456
<strong>curl_upkeep</strong>
在
检索密码长度:<strong>openssl_cipher_key_length</strong>
在
openssl_cipher_key_length("CHACHA20-POLY1305"); // 32 openssl_cipher_key_length("AES-128-GCM"); // 16 openssl_cipher_key_length("AES-256-GCM"); // 32
重置记录的峰值内存使用量:<strong>memory_reset_peak_usage</strong>
这对于多次调用或迭代调用时很有用。
PHP8.2也带来了相当一部分的弃用。当语法、函数和特性被弃用时,PHP会发起一个弃用通知,该通知不应该中断PHP程序,但会被记录到错误日志中。
注意:PHP8.0 以后,PHP 的默认错误报告行为是E_ALL
PHP8.2中最值得注意的弃用之一就是弃用动态属性。如果一个类属性没有声明就被调用或赋值,就会退出程序。
class User { public int $uid; } $user = new User(); $user->name = 'Foo';
这个可能会影响到很多的的PHP遗留程序,推荐的修复方法是在类型中声明属性。
对此也有例外用法,比如stdClass和它的子类将正常使用,__get和__set魔术方法将正常使用,或者声明#AllowDynamicProperties。
其他一些弃用可以关注本站其他文章:
《PHP8.2 中字串变量解析的新用法》https://phpreturn.com/index/a628de16a2adf8.html
PHP 8.2现在可以在所有常规源代码中下载/安装:
Windows:编译后的二进制文件可在windows.php.net
Ubuntu/Debian: PHP 8.2可用ondrej/phpPPA
Fedora/RHEL/CentOS/Alma/Rocky:可以在Remi的源中获取
Mac OS: PHP 8.2可以通过Homebrew安装shivammathur/homebrew-php利用.
Docker:可以通过8.2*版本获取PHP 8.2
原文地址:https://phpreturn.com/index/a639285aa925ed.html
原文平台:PHP武器库
更多编程相关知识,请访问:编程教学!!
위 내용은 PHP8.2가 출시되었습니다. 어떤 변화가 있는지 직접 확인해보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!