__set 这个魔术方法可以在设置对象里的私有,受保护或者不存在的属性值的时候自动被调用。下面,我们可以在 Track 这个类里去使用这个方法。
public function __set() .. 这个方法有两个参数 .. $name ,还有 $value ... $name 就是要设置的属性 ... $value 是属性的值 ...
在这个函数里,我们可以简单的把对象的属性的值,设置成要设置的值 ...
public function __set($name, $value) {
$this->$name = $value;
}
在下面,同样去创建一个 Track 类的实例 ... 然后再去设置一下 track_name 这个属性的值 ... 设置成 Magic ... 这样,track_name 这个属性就是 __set 这个方法的第一个参数 ... 也就是那个 $name 参数 ... 等号右边的这个值,会作为 __set 方法里面的第二个参数 ... $value 参数 ...
再把 magic 这个对象,用 print_r 输出到屏幕看一下 ...
$magic = new Track();
$magic->track_name = 'Magic';
print_r($magic);
你会发现,magic 这个对象的 track_name 属性的值就被设置成了 Magic ... 因为 track_name 是一个私有的属性 ... 所以在设置它的时候,会自动去调用 __set() 这个魔术方法去设置它的值 ...