多个实例检查

Ale*_*lex 9 php instanceof

是否有更短的方法来检查某个对象是否属于某组类的一部分?

使用instanceof使IF语句太长: if($obj instanceof \Class1 || $obj instanceof \Class2 || $obj instanceof \Class3....)

这不起作用: instance of \Class1 || \Class2 || \Class3

它假定Class2是常数..

Kin*_*nch 7

简而言之:不

更长的答案:您可以创建变通方法,使用get_parent_class()递归来获取所有父类,然后用于array_intersect()查找是否有一个或多个类名出现在那里.然而,似乎他们的课程应该有一些共同之处.把它放到一个接口测试中.


web*_*ave 7

使IF语句太长

[...]

是否有更短的方式

当然.

只需创建一个功能:

function isOfValidClass($obj)
{
    $classNames = array('Class1', 'Class2');
    foreach ($classNames as $className) {
        if (is_a($obj, $className)) {
        return true;
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在代码中使用它,而不必担心你的if语句"占用太多空间"(并不是说你应该考虑这个问题;语句应该只要它们需要).


Lob*_*obo 1

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