本文目录一览:
如何在PHP中使用call
__call()函数是php类的默认魔法函数,__call() 在一个对象的上下文中,如果调用的方法不存在的时候,它将被触发:
?php
class MethodTest {
public function __call($name, $arguments) {
// Note: value of $name is case sensitive.
echo "Calling object method '$name' "
. implode(', ', $arguments). "\n";
}
}
$obj = new MethodTest;
$obj-runTest('in object context');
运行结果:
Calling object method 'runTest' in object context
php中怎么用call
__call 是一个魔术方法,当调用一个不可访问的对象方法(非静态方法),会自动的执行该魔术方法。public funciton __call($name,$arr)
比如,在类外部,调用类中一个不存在的方法,就会自动执行这个__call方法( $name,$arr),参数$name代表的是你调用的方法名,$arr代表的是你调用这个方法里面的所有参数。
class a {
pu blic function __call($name,$arr){
echo $name;
var_dump($arr);
}
}
$a = new a();
$a-testa(1,2,3);
此时,$name就是testa $arr就是array(1,2,3)组成的数组。
黑马程序员的PHP是国内最早开设的真正人工智能课程。课程全面系统,紧跟时代潮流。
php中怎么使用call
PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
?php
class foo {
function __call($name,$arguments) {
print("Did you call me? I'm $name!");
}
} $x = new foo();
$x-doStuff();
$x-fancy_stuff();
?
这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。
?php
class Magic {
function __call($name,$arguments) {
if($name=='foo') {
if(is_int($arguments[0])) $this-foo_for_int($arguments[0]);
if(is_string($arguments[0])) $this-foo_for_string($arguments[0]);
}
}
private function foo_for_int($x) {
print("oh an int!");
}
private function foo_for_string($x) {
print("oh a string!");
}
}
$x = new Magic();
$x-foo(3);
$x-foo("3");
?