批改状态:合格
老师批语:无论是属性, 还是方法的重载 , 都是提供了一种容错机制, 但我们可以利用语言的宽容, 可以做许多有趣的事情
一、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));点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号