Correction status:qualified
Teacher's comments:无论是属性, 还是方法的重载 , 都是提供了一种容错机制, 但我们可以利用语言的宽容, 可以做许多有趣的事情
一、PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。可以通过魔术方法(magic methods)来实现的。
二、当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。
三、所有的重载方法都必须被声明为 public。
四、属性重载可以通过 __get,__set,__isset,__unset几个特殊方法来进行
五、方法重载可以通过__call方法来完成,调用未定义的方法时,方法名和方法接收的参数将会传给__call方法,php传递__call的值返回给未定义的方法。
六、实例
<?php class Overloader { public $n = 'public'; private $properties = array(); function __get($property_name) { if(isset($this->properties[$property_name])) { return ($this->properties[$property_name]); } else { return (NULL); } } function __set($property_name,$value) { $this->properties[$property_name] = $value; } public function __isset($property_name) { return isset($this->properties[$property_name]); } public function __unset($property_name) { unset($this->properties[$property_name]); } } $o = new Overloader(); $o->test = 'content'; echo '$o->test:'; echo $o->test; echo '<br>'; var_dump(isset($o->test));
点击 "运行实例" 按钮查看在线实例