在抽象类中声明的PHP magic method__集合避免了扩展类属性赋值
我对抽象类(模型)中的神奇方法_set()有一个问题,因为我无法指定扩展模型的类的任何属性。正在尝试打印_set方法中变量的名称:在抽象类中声明的PHP magic method__集合避免了扩展类属性赋值,php,abstract-class,extends,magic-methods,Php,Abstract Class,Extends,Magic Methods,我对抽象类(模型)中的神奇方法_set()有一个问题,因为我无法指定扩展模型的类的任何属性。正在尝试打印_set方法中变量的名称: abstract class Model { public $data; public function __set($name, $value) { echo $name; $this->$name = $value; } } class User extends Model { public $id; } $u = new User(); $u->
abstract class Model
{
public $data;
public function __set($name, $value)
{
echo $name; $this->$name = $value;
}
}
class User extends Model
{
public $id;
}
$u = new User();
$u->data = "hello"; //print "data";
$u->id = 123; //print NOTHING.. WHY¿?
当您尝试在未定义的属性中赋值时,将调用
\u set
。在您的情况下,将永远不会调用\u set
,因为这两个属性都已定义并存在
这两个属性的输出都为零,请尝试删除其中一个属性声明部分,并查看输出的差异。您不是在
用户
类中定义了id
?