1

我对抽象类(模型)中的魔术方法 __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¿?
4

1 回答 1

2

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

请参阅此处,这两个属性的输出都没有,并尝试删除其中一个属性声明部分并查看输出差异。

于 2012-09-27T10:32:41.720 回答