类中的PHP-catchall方法
是否需要设置一个类,以便在没有定义方法的情况下,该类不会抛出错误,而是转到一个catch all函数 这样,如果我调用$myClass->foobar;但是类定义中从未设置foobar,其他方法将处理它。。特别是,.您希望使用它来捕获被调用的方法及其参数。是的,您可以使用magic方法,在找不到合适的方法时调用该方法。例如:类中的PHP-catchall方法,php,oop,class,methods,catch-all,Php,Oop,Class,Methods,Catch All,是否需要设置一个类,以便在没有定义方法的情况下,该类不会抛出错误,而是转到一个catch all函数 这样,如果我调用$myClass->foobar;但是类定义中从未设置foobar,其他方法将处理它。。特别是,.您希望使用它来捕获被调用的方法及其参数。是的,您可以使用magic方法,在找不到合适的方法时调用该方法。例如: class Foo { public function __call($name, $args) { printf("Call to %s int
class Foo {
public function __call($name, $args) {
printf("Call to %s intercepted. Arguments: %s", $name, print_r($args, true));
}
}
$foo = new Foo;
$foo->bar('baz'); // Call to bar intercepted. Arguments: string(3) 'baz'
是的,是:
从PHP 5.3开始,您还可以使用静态方法:
class Foo {
static public function __callStatic($method, $args) {
echo "$method is not defined";
}
}
Foo::hello();
Foo::world();
__invoke与_调用不同。如果@changokun想要做$myclass,那么_invoke就是答案+1另外,它是PHP重载,这与其他OOP语言的用法不同,令人费解。
class Foo {
static public function __callStatic($method, $args) {
echo "$method is not defined";
}
}
Foo::hello();
Foo::world();