PHP - 类中的 catchall 方法

标签 php oop class methods catch-all

是否可以设置一个类,以便在未定义方法时不会抛出错误,而是转到一个包罗万象的函数?

如果我调用 $myClass->foobar(); 但 foobar 从未在类定义中设置,其他一些方法会处理它吗?

最佳答案

是的,是overloading :

class Foo {
    public function __call($method, $args) {
        echo "$method is not defined";
    }
}

$a = new Foo;
$a->foo();
$b->bar();

从 PHP 5.3 开始,您还可以使用静态方法来完成此操作:

class Foo {
    static public function __callStatic($method, $args) {
        echo "$method is not defined";
    }
}

Foo::hello();
Foo::world();

关于PHP - 类中的 catchall 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6254779/

相关文章:

javascript - 在类函数中访问 JavaScript 类变量

php - php 安装脚本中可能缺少 mkdir() 权限的解决方案

javascript - 使用 AJAX 将 JSON 数据从 php 文件传递​​到 javascript 文件

PHPUnit 找不到 "TestCase"类

c++ - 在 C++ 中创建新对象只有两种方法吗? (使用和不使用 `new` 关键字)

oop - vbscript静态类变量/方法?

class - 在 VBA 中释放递归类模块

c++ - 用纯虚拟类 copy-and-swap 成语

php - 客户端需要 Elasticsearch 运行时异常 curl_multi_exec() 函数

java - 找不到 arrayindexoutofbounds 错误