如果实体是少数类但不是某些类的成员,我想执行一些功能。
有一个函数叫做instanceof
.
但是有没有类似的东西
if ($entity !instanceof [User,Order,Product])
如果实体是少数类但不是某些类的成员,我想执行一些功能。
有一个函数叫做instanceof
.
但是有没有类似的东西
if ($entity !instanceof [User,Order,Product])
给他们一个通用的接口,然后
if (!$entity instanceof ShopEntity)
或留在
if (!$entity instanceof User && !$entity instanceof Product && !$entity instanceof Order)
我会避免创建任意函数只是为了在一个地方保存一些字符。另一方面,如果您“过于频繁”地需要它,您可能存在设计缺陷?(在“太多边缘情况”之类的意思中)
PHP手册说: http: //php.net/manual/en/language.operators.type.php
!($a instanceof stdClass)
这只是一个逻辑和“语法”正确的书面语法。
!$class instanceof someClass
但是,上面建议的语法很棘手,因为我们没有具体说明哪个是否定的范围:变量本身或$class instanceof someclass
. 我们在这里只需要依赖运算符的优先级[编辑,感谢@Kolyunya]。
这个函数应该这样做:
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));
}
或者你可以试试这些
$cls = [GlobalNameSpace::class,\GlobalNameSpaceWithSlash::class,\Non\Global\Namespace::class];
if(!in_array(get_class($instance), $cls)){
//do anything
}