PHP中常用的三种魔术方法:
第一类魔术方法:__get和__set方法
-
__get方法:protected $array = array(); function __set($name, $value) { echo __METHOD__; $this->array[$name] = $value; }当我们在设置这个类的属性的时候,如果没有这个属性的话,就会进行自动设置:
$obj->title = "hello"; -
__set方法:function __get($name) { echo __METHOD__; return $this->array[$name]; }当我们在调用这个类的属性的时候,如果没有这个属性,则会在上述的
$array数组中自动查找,如果有的话就会自动调出。echo $obj->title;
第二类魔术方法:___call和___callStatic方法:
-
__call方法:function __call($name, $arguments) { var_dump($name,$arguments); return "magic function"; }当我们调用这个类中未定义的方法的时候,则会自动调用该魔术方法:
echo $obj->test('Hellow',123); -
__callStatic方法:static function __callStatic($name, $arguments) { var_dump($name,$arguments); return "static magic function"; }这个魔术方法和__call方法类似,但是只有必须是静态方法
staitc的时候,才会调用:echo Object::test('Hellow1',123);
第三类魔术方法:__toString方法和__invoke方法:
-
__toString方法:function __toString() { return __CLASS__; } -
__invoke方法:function __invoke($param) { var_dump($param); return 'invoke'; }该魔术方法相当于将一个对象当成函数来执行:
echo $obj('test1');

338

被折叠的 条评论
为什么被折叠?



