PHP - 类中的包罗万象的方法

发布于 2024-11-14 12:15:33 字数 135 浏览 3 评论 0原文

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

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

Is there away to set up a class so that if a method is not defined, instead of throwing an error it would go to a catch-all function?

such that if i call $myClass->foobar(); but foobar was never set in the class definition, some other method will handle it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

时光暖心i 2024-11-21 12:15:33

是的,这是重载

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();

Yes, it's overloading:

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

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

As of PHP 5.3, you can also do it with static methods:

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

Foo::hello();
Foo::world();
一个人的旅程 2024-11-21 12:15:33

您想使用 __call() 来捕获被调用的方法并他们的论点。

You want to use __call() to catch the called methods and their arguments.

夏天碎花小短裙 2024-11-21 12:15:33

是的,您可以使用 __call 魔术方法当没有找到合适的方法时调用。例子:

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'

Yes, you can use the __call magic method which is invoked when no suitable method is found. Example:

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'
何止钟意 2024-11-21 12:15:33

魔术方法。特别是 __call()

Magic methods. In particular, __call().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文