【发布时间】:2026-01-06 20:50:02
【问题描述】:
所以,method_exists() 需要一个对象来查看方法是否存在。但我想知道同一个类中是否存在方法。
我有一个方法可以处理一些信息并可以接收一个操作,它运行一个方法来进一步处理该信息。我想在调用它之前检查该方法是否存在。我怎样才能实现它?
例子:
class Foo{
public function bar($info, $action = null){
//Process Info
$this->$action();
}
}
【问题讨论】:
-
下面的答案都很好,只是补充一句:你有没有问过自己为什么你需要找出方法是否存在?如果您有一个从父类继承的方法,或者如果您不确定当前类继承自什么,则可能会出现这种情况。这两种情况都可以通过使用接口或抽象方法定义来处理。哪个更透明,并将错误从运行时转移到编译时,因此更可取。
-
因为我还有其他一些公开的方法,并进一步处理该信息并返回处理后的数据,所以第一个方法不返回,因为它可以接收只需要处理的数据,而不是需要返回任何东西。但我认为如果需要从第一个方法调用另一个方法会节省时间,但仍然可以单独调用它们。
-
但是在类本身内部,为什么要不清楚方法是否存在?我的意思是它是在类中声明/实现的,或者不是。在运行时如何以及为什么要改变?我会说您确切知道该方法是否存在。
-
因为
$action可以接收到一个不存在的方法名。 -
啊,您通过将其名称作为字符串传递来指定方法。确实,非常丑陋和不安全......