php 常用魔术方法,php的常用魔术方法

只能说常用,因为魔术方法太多了,但是我们经常打交道的有限。

__construct():

类的构造方法,实例化类时调用:

class Bar{

function __construct($name){

$this->name = $name;

echo "call construct";

}

}

new Bar();//call construct;

__destruct()

类的析构方法,销毁对象时调用:

class Bar{

function __destruct(){

echo "destruct";

}

}

$bar = new Bar();

$bar = null;//destruct

unset($bar);//destruct

__get()

__set()

__get()和__set()是一对,起到的作用仿佛是为每个成员变量都隐含的设置了get和set方法,

所以,在外部设置局部变量也成为可能,就像是访问public权限的变量一样。

class Bar{

private $name;

function __get($key){

return $this->$key;

}

function __set($key,$value){

$this->key = $value;

}

}

$bar = new Bar();

$bar->name = 'foo';

echo $bar->name;//foo

__clone()

使用clone自动调用__clone()方法:

class Bar{

function __clone(){

echo "clone object";

}

}

$bar = new Bar();

$foo = clone $bar;//clone object

关于__clone,官方有更好的说明

__sleep()

序列化对象时调用

__wakeup()

反序列化对象时调用

与一般的对象(如数组),类对象(自定义的class)的实例化和反实例化,尤其是单例(singleton)的序列化比较复杂,我们将用另一篇文章来说明。

__toString()

打印一个对象时调用:

class Bar{

private $item = array(1,2,3);

function toString(){

echo implode($this->item,',');

}

}

__invoke()

以函数的方式调用一个方法时自动调用__invoke():

class Bar{

function __invoke($str)

{

// TODO: Implement __invoke() method.

echo $str;

}

}

$bar = new Bar;

$bar('foo');//foo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值