如何检查是否在symfony2中某个类的实例

我想要执行一些function,如果实体是几个类的成员,但不是一些。

有一个叫做instanceof的函数。

但是有没有像

 if ($entity !instanceof [User,Order,Product]) 

给他们一个共同的界面,然后

 if (!$entity instanceof ShopEntity) 

或留下来

 if (!$entity instanceof User && !$entity instanceof Product && !$entity instanceof Order) 

我会避免创build任意function只是为了在一个地方保存一些字符。 另一方面,如果你需要“太频繁”,你可能会有一个devise缺陷? (在“太多边缘情况下”的意思)

PHP手册说: http : //php.net/manual/en/language.operators.type.php

 !($a instanceof stdClass) 

这只是一个逻辑和“语法”正确的书面语法。

上述build议的语法虽然很棘手,因为我们没有指定否定的范围:variables本身或“$ var instanceof someclass”的整个构造。 我们只需要依靠运营商的优先权[编辑,感谢@Kolyunya]。

 !$class instanceof someClass 

PHP运算符优先级

instanceof运算符就在否定之前,那么这个expression式:

 !$class instanceof someClass 

在PHP中恰到好处,这是你期望的。

这个function应该这样做:

 function isInstanceOf($object, Array $classnames) { foreach($classnames as $classname) { if($object instanceof $classname){ return true; } } return false; } 

所以你的代码是

 if (!isInstanceOf($entity, array('User','Order','Product'))); 
 function check($object) { $deciedClasses = [ 'UserNameSpace\User', 'OrderNameSpace\Order', 'ProductNameSpace\Product', ]; return (!in_array(get_class($object), $allowedClasses)); }