我试图了解每次 PHP 变量如何执行某些操作,即使未声明它也是在类中初始化的。
因此,在阅读了 stackoverflow 上的一些内容后,我偶然发现了神奇方法
__set()
,但只有当变量具有私有可见性或不存在的属性时(因此在发生错误的情况下)才会调用它。
您可以使用类似的东西在变量初始化之前执行某些操作。
我说的是当你做这样的事情时:
class obj {
//here needed something
}
$obj = new obj();
$obj->newvar = 'varvalue';
无论如何我都需要它。
我也需要它,因为然后我需要检查变量是否在对象中声明为公共(声明中不存在),因此可以仅从对象外部初始化声明的变量。如果您也知道第二部分,您也可以为此提供解决方案。
您可以创建一个空数组并使用 set 和 get 方法将新的变量数据传递到其中
<?php
class obj {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
return $this->data[$name] ?? null;
}
}
$obj = new obj();
$obj->newvar = 'varvalue';