首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个instanceof检查

多个instanceof检查
EN

Stack Overflow用户
提问于 2012-05-29 23:58:33
回答 3查看 7.8K关注 0票数 13

有没有一种更短的方法来检查一个对象是否是某个类集合的一部分?

使用instanceof会使if语句过长:

代码语言:javascript
复制
if($obj instanceof \Class1 || $obj instanceof \Class2 || $obj instanceof \Class3)

但这并不起作用:

代码语言:javascript
复制
instance of \Class1 || \Class2 || \Class3

它假设Class2是常量。

EN

回答 3

Stack Overflow用户

发布于 2012-05-30 00:15:12

使IF语句太长

..。

有没有更短的路?

好的。

简单地创建一个函数

代码语言:javascript
复制
function isOfValidClass($obj)
{
    $classNames = array('Class1', 'Class2');
    foreach ($classNames as $className) {
        if (is_a($obj, $className)) {
        return true;
    }

    return false;
}

然后,您可以在代码中使用它,而不必担心if语句“占用太多空间”(这并不是说您永远不应该认为这是一个问题;语句应该尽可能长)。

票数 9
EN

Stack Overflow用户

发布于 2012-05-30 00:02:38

简而言之:不

长话短说:您可以创建变通方法,使用get_parent_class()递归获取所有父类,然后使用array_intersect()找出是否有一个或多个类名出现在父类中。然而,似乎它们的类应该有一些共同之处。将其放入一个接口中,并对其进行测试。

票数 8
EN

Stack Overflow用户

发布于 2012-05-30 00:02:00

我认为,最短的方法是将布尔表达式放在外部方法中,并将其调用到IF语句中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10802645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档