Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在抽象类中声明的PHP magic method__集合避免了扩展类属性赋值_Php_Abstract Class_Extends_Magic Methods - Fatal编程技术网

在抽象类中声明的PHP magic method__集合避免了扩展类属性赋值

在抽象类中声明的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->

我对抽象类(模型)中的神奇方法_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->data = "hello"; //print "data";
$u->id = 123; //print NOTHING.. WHY¿?

当您尝试在未定义的属性中赋值时,将调用
\u set
。在您的情况下,将永远不会调用
\u set
,因为这两个属性都已定义并存在


这两个属性的输出都为零,请尝试删除其中一个属性声明部分,并查看输出的差异。

您不是在
用户
类中定义了
id