gpt4 book ai didi

php - instanceof 或 method_exist 应该使用哪个?

转载 作者:行者123 更新时间:2023-12-05 08:57:50 25 4
gpt4 key购买 nike

在我的验证类中,我传递了不同的类对象,并且需要在这些类上调用一个方法。现在的问题是。我怎样才能确保该方法存在。

我应该像这样使用 instanceof 吗:

...
...
if($passedObject instanceof MyExpectedClass) {
//then call the rquired method
}
...
...

或者应该像这样寻找 method_exists:

...
...
if(method_exists($passedObject, 'MyExpectedMethod')) {
//then call the rquired method
}
...
...

我很困惑。哪种方法更好。

编辑

我知道如果传递的 Object 是预期类的实例,那么预期方法也将存在,因为 MyExpected Class 实现了我的接口(interface),其中包含预期方法。希望这将使场景更加清晰。

最佳答案

@Ashish Awasthi

我知道这是一个老问题,但是,我想把我的 2 便士投入...

如果您使用的是 OOP,那么正确答案(恕我直言)是 instanceof,NOTmethod_exists。

method_exists 只会返回一个 bool 值,告诉你这个方法是否被定义。但是 instanceof 保证该方法将存在并且该方法的定义将采用预期的格式,例如:它将会存在,并且该方法需要 2 个参数(或 3 个,或者您认为有多少已为您的方法定义)。而且,如果您使用了类型提示,那么 instanceof 还将确保参数(和返回值)的格式符合预期。 method_exists 做不到这些!

关于php - instanceof 或 method_exist 应该使用哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28767294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com