日期:2014-05-17  浏览次数:20529 次

php __call and __callStatic

PHP5?的对象新增了一个专用方法?__call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call?方法将会被自动调用。

?

__call()?is triggered when invoking inaccessible methods in an object context.

__callStatic()?is triggered when invoking inaccessible methods in a static context.

?

<?php
class?MethodTest?{
????public?function?
__call($name,?$arguments)?{
????????
//?Note:?value?of?$name?is?case?sensitive.
????????
echo?"Calling?object?method?'$name'?"
?????????????
.?implode(',?',?$arguments).?"\n";
????}

????
/**??As?of?PHP?5.3.0??*/
????
public?static?function?__callStatic($name,?$arguments)?{
????????
//?Note:?value?of?$name?is?case?sensitive.
????????
echo?"Calling?static?method?'$name'?"
?????????????
.?implode(',?',?$arguments).?"\n";
????}
}

$obj?=?new?MethodTest;
$obj->runTest('in?object?context');

MethodTest::runTest('in?static?context');??//?As?of?PHP?5.3.0
?>