PHP8.2是PHP语言现代化进程中的一个重要的里程碑。除了令人兴奋地新特性和改进之外,PHP8.2还简化了语言,取消了对动态类属性的支持,在遇到某些非最优的ini配置时发出警告,并修复了一些影响PHP数组排序和某些类型的字符串转换/编码操作的遗留PHP行为。【推荐学习:PHP视频教程】
 (资料图片)
(资料图片)
系统改进
PHP8.2解决了PHP类型系统的几个缺点和限制,允许PHP应用采用更好的类型安全。包括添加了true类型,允许null和false作为独立的类型使用,并支持DNF类型(泛型解析)。
PHP8.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 常量
在
trait Foo{    public const CONSTANT = 1;}class Bar{    use Foo;}var_dump(Bar::CONSTANT); // 1var_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登录后复制curl_upkeep
在
检索密码长度:openssl_cipher_key_length
在
openssl_cipher_key_length("CHACHA20-POLY1305"); // 32openssl_cipher_key_length("AES-128-GCM"); // 16openssl_cipher_key_length("AES-256-GCM"); // 32登录后复制重置记录的峰值内存使用量:memory_reset_peak_usage
这对于多次调用或迭代调用时很有用。
PHP8.2 中的弃用
PHP8.2也带来了相当一部分的弃用。当语法、函数和特性被弃用时,PHP会发起一个弃用通知,该通知不应该中断PHP程序,但会被记录到错误日志中。
已弃用动态属性
PHP8.2中最值得注意的弃用之一就是弃用动态属性。如果一个类属性没有声明就被调用或赋值,就会退出程序。
class User {    public int $uid;}$user = new User();$user->name = "Foo";登录后复制这个可能会影响到很多的的PHP遗留程序,推荐的修复方法是在类型中声明属性。
对此也有例外用法,比如stdClass和它的子类将正常使用,__get和__set魔术方法将正常使用,或者声明#AllowDynamicProperties。
其他一些弃用可以关注本站其他文章:
安装和升级到PHP8.2 
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
更多编程相关知识,请访问:编程教学!!
以上就是PHP8.2发布了,快来看看有什么改动!的详细内容,更多请关注php中文网其它相关文章!






































































 
  
  
 