【发布时间】:2023-02-08 12:07:21
【问题描述】:
Deprecated: Creation of dynamic property ... is deprecated
我越来越多地看到这种情况,但我不确定我需要做什么才能停止此警告。
这是我的课:
class database {
public $username = "root";
public $password = "pasword";
public $port = 3306;
public function __construct($params = array())
{
foreach ($params as $key => $value)
{
$this->{$key} = $value;
}
}
}
这就是我实例化它的方式。
$db = new database(array(
'database' => 'db_name',
'server' => 'database.internal',
));
这给了我两条信息:
Deprecated: Creation of dynamic property database::$database is deprecated
Deprecated: Creation of dynamic property database::$server is deprecated
【问题讨论】:
-
你得到的确切警告是什么?
-
我得到了一些这样的消息,“未知错误类型:[8192] 动态属性数据库的创建::$server 已被弃用,还有一个用于 $server”
-
稍后在创建该 $database 对象时必须传递其他参数。
-
您可以在 setter 之前使用类似这样的内容:
if (!property_exists($this, $key)) { throw new Exception('Unknown property'); }它不会修复您的代码,但它至少会让您了解确定其他违规行为的过程。 -
@AlexHowansky 该消息已经命名了正在创建的属性; OP 刚刚将其编辑掉。
标签: php