PHP 8.2 新特性之弃用动态属性

作者: 温新

分类: 【PHP基础】

阅读: 4577

时间: 2023-02-20 16:26:14

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 魔术方法的使用不受此更改的影响。

请登录后再评论