PHP 8.2 新特性之弃用动态属性
hi,我是温新,一名 PHPer
PHP 8.2 开始,弃用动态属性,如果使用动态属性将会报一个警告信息。但是也,有方法可以继续使用动态属性。
PHP 8.2 弃用动态属性
<?php
class User
{
}
$user = new User;
// 设置动态属性
$user->name = 'Lucy';
PHP 8.2 中使用动态属性,会报如下信息:
Deprecated: Creation of dynamic property User::$name is deprecated in
PHP 8.2 新属性 #[\AllowDynamicProperties] 可以使用动态属性
PHP 8.2 虽然弃用了动态属性,但是也给我们提供了几种使用动态属性的方法。
1、新属性 #[\AllowDynamicProperties] 使用动态属性
<?php
// 使用此注解标记可以使用动态属性
#[\AllowDynamicProperties]
class User
{
}
$user = new User;
$user->name = 'Lucy';
echo $user->name;
2、使用 stdClass 类添加动态属性
<?php
$user = new stdClass;
$user->name = 'Lucy';
echo $user->name;
现在对 stdClass 进行扩展,便于使用动态属性,但是不推荐此种做法。
<?php
class User extends stdClass
{
}
$user = new User;
$user->name = '王美美';
echo $user->name;
PHP 8.2 虽然弃用了动态属性,但是
__get
/__set
魔术方法的使用不受此更改的影响。
请登录后再评论