php魔术方法
Posted 小竹_phper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php魔术方法相关的知识,希望对你有一定的参考价值。
php魔术方法的使用:
方法名 | 方法作用 |
---|---|
__get/ __set | 将对象的属性进行接管,访问/设置不存在的属性时 |
__call/ __callStatic | 控制对象的方法调用,访问不存在的方法、静态方法时 |
__toString | 将php对象转化为字符串 |
__invoke | 将php对象当作一个函数来执行时会调用这个方法 |
<?php
class Object
protected $array = array();
function __set($key, $value)
var_dump(__METHOD__);
$this->array[$key] = $value;
function __get($key)
var_dump(__METHOD__);
return $this->array[$key];
function __call($func, $param)
var_dump($func, $param);
return "__call() magic function\\n";
static function __callStatic($func, $param)
var_dump($func, $param);
return "__call() static magic function\\n";
function __toString()
return __CLASS__;
function __invoke($param)
var_dump($param);
return "invoke";
$obj = new Object();
$obj->title = "hello"; // 自动调用__set()魔术方法
echo $obj->title; // 自动调用__get()魔术方法
echo $obj->test("hello", 123); // 自动调用__call()魔术方法
echo Object::test("helloStatic", 456); // 自动调用__callStatic()魔术方法
echo '__toString()方法返回值:' . $obj . '\\n'; // 自动调用__toString()魔术方法
echo $obj("test1"); // 自动调用__invoke()魔术方法
?>
运行结果:
string(13) "Object::__set"
string(13) "Object::__get"
hellostring(4) "test"
array(2)
[0] =>
string(5) "hello"
[1] =>
int(123)
__call() magic function
string(4) "test"
array(2)
[0] =>
string(11) "helloStatic"
[1] =>
int(456)
__call() static magic function
__toString()方法返回值:Objectstring(5) "test1"
invoke
以上是关于php魔术方法的主要内容,如果未能解决你的问题,请参考以下文章