__call
class A {
public function __call($name, $arguments)
{
echo '方法不存在!';
}
}
$a = new A();
$a->test(); //没有_call 的时候有警告error: Uncaught Error: Call to undefined method A::test()
__callstatic 同上
__set 设置不存在的属性
class A {
public function __set($attr, $value)
{
if($attr == "name") echo $attr;
}
}
$a = new A();
$a->name = "熙梦"
__get 调用不存在的属性
class A {
public function __get($name)
{
return '熙梦';
}
}
$a = new A();
echo $a->name; //熙梦
__construct
执行时机:在使用 new关键字使用类实例化一个对象时自动执行
功能作用:通常用于对对象的属性进行初始化
__destruct
执行时机:在对象被销毁(unset或PHP执行结束)时自动执行
功能作用:通常用于释放对象占用的第三方资源(如:数据库)
__clone
clone得出的对象不影响原对象
执行时机:在克隆(clone)对象时自动执行
功能作用:在克隆对象时可以同时执行一些其它操作,甚至可以阻止对象被克隆
__toString()
执行时机:在对象被当成字符串使用时自动执行
功能作用:兼容对象的字符串调用形式,根据用户需求显示出对象的字符串形态
__invoke() 函数调用方法
执行时机:在对象被当成函数使用时自动执行
功能作用:兼容对象的函数调用形式,允许用户像使用函数一样使用对象
class A {
public function __construct(){
echo '对象被创建'."\r\n";
}
public function __destruct()
{
echo '对象被销毁'."\r\n";
}
public function __toString()
{
return "输出对象\r\n";
}
public function __invoke() //invoke 调用
{
echo "对象被当成函数使用\r\n";
}
public function __clone()
{
echo "对象被clone\r\n"; //防止被clone
}
}
$a = new A();
echo $a;
$a();
$c = clone $a;
/*
对象被创建
输出对象
对象被当成函数使用
对象被clone
对象被销毁
对象被销毁
*/










网友评论