PHP中面向对象之魔术方法(__tostring,__invoke)详解
__tostring():
总结:
1、在类中魔术方法__tostring方法的定义,定义格式如下public function __tostring(),注意是2个下划线,不是一个
2、当对象被当做String使用时,这个方法会被自动调用
-比如我们一般输出字符串,是用echo "你好",所以如果我们希望把一个对象当做String来使用,我们也可以直接这样写echo $obj,那此时,这个这行代码会触发这个__tostring魔术方法的执行
<?php
class Animal{
public $name = "";
public function __construct($name){
$this->name = $name;
}
public function eat(){ }
public function sleep(){ }
//魔术方法 注意这里改成了一个下划线
public function _tostring(){
return "自动执行了Animal类中的__tostring方法<br/>";
}
}
$monkey = new Animal("猴子");
echo $monkey;
?>
__invoke():
总结:
1、类中__invoke魔术方法的定义如下:public function __invoke()其实和普通函数一样的定义,就是名称必须是__invoke
2、当对象被当做方法使用时,这个方法会被自动调用
-比如我们一般调用方法是怎么调用的,是直接方法名(),比如smile()这样,所以当我们希望把一个对象当成方法使用时,应该怎么做呢?其实就是直接$obj(里面可以写参数),这样的形式就是方法调用的形式对吧,那么,一旦我们这样写$obj(参数),那么这个类中的__invoke()的魔术方法也会被自动的调用
<?php
class Animal{
public $name = "";
public function __construct($name){
$this->name = $name;
}
public function eat(){ }
public function sleep(){}
//魔术方法
public function __invoke(){
echo "自动执行了Animal类中的__invoke方法<br/>";
}
}
$monkey = new Animal("猴子");
$monkey();
?>
上一篇: 怎么查询mysql的字符集
下一篇: 广告合作