PHP __call()和__callStatic()的用法(新手必看)
在 PHP 类中,魔术方法是一些特殊功能的方法,其名称都使用两个下画线(_)作为前缀,比如类构造函数和析构函数、__get() 和 __set() 方法等。
本节带大家系统学习两个魔术方法,分别是 __call() 和 __callStatic() 方法:
这两个方法的参数定义相同,其中,参数一指定调用的方法名称,参数二指定一个数组,其中包含了调用方法时带入的参数。
下面的代码演示了 __call() 方法的应用:
下面的代码演示了 __callStatic() 方法的应用:
本节带大家系统学习两个魔术方法,分别是 __call() 和 __callStatic() 方法:
- __call() 方法在调用不可访问的实例方法时执行;
- __callStatic()方法则在调用不可访问的静态方法时执行。
这两个方法的参数定义相同,其中,参数一指定调用的方法名称,参数二指定一个数组,其中包含了调用方法时带入的参数。
下面的代码演示了 __call() 方法的应用:
<?php class tTest { public function __call($name, $args) { echo "调用的方法:", $name, "<br> 参数:<br>"; foreach($args as $k=>$v) { echo "[$k] = {$v}<br>"; } } } $obj = new tTest(); $obj->m1(1,2); echo "<br>"; $obj->m2("a", "b", "c"); ?>运行结果为:
调用的方法:m1
参数:
0=1
1=2
调用的方法:m2
参数:
0=a
1=b
2=c
下面的代码演示了 __callStatic() 方法的应用:
<?php class tTest { public static function __callStatic($name, $args) { echo "调用的方法:", $name, "<br> 参数:<br>"; foreach($args as $k=>$v) { echo "{$k} = {$v}<br>"; } } } tTest::m1(1,2); echo "<br>"; tTest::m2("a", "b", "c"); ?>运行结果为:
调用的方法:m1
参数:
0=1
1=2
调用的方法:m2
参数:
0=a
1=b
2=c