如何检查是否在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)); }