有没有一种更短的方法来检查一个对象是否是某个类集合的一部分?
使用instanceof会使if语句过长:
if($obj instanceof \Class1 || $obj instanceof \Class2 || $obj instanceof \Class3)但这并不起作用:
instance of \Class1 || \Class2 || \Class3它假设Class2是常量。
发布于 2012-05-30 00:15:12
使IF语句太长
..。
有没有更短的路?
好的。
简单地创建一个函数
function isOfValidClass($obj)
{
$classNames = array('Class1', 'Class2');
foreach ($classNames as $className) {
if (is_a($obj, $className)) {
return true;
}
return false;
}然后,您可以在代码中使用它,而不必担心if语句“占用太多空间”(这并不是说您永远不应该认为这是一个问题;语句应该尽可能长)。
发布于 2012-05-30 00:02:38
简而言之:不
长话短说:您可以创建变通方法,使用get_parent_class()递归获取所有父类,然后使用array_intersect()找出是否有一个或多个类名出现在父类中。然而,似乎它们的类应该有一些共同之处。将其放入一个接口中,并对其进行测试。
发布于 2012-05-30 00:02:00
我认为,最短的方法是将布尔表达式放在外部方法中,并将其调用到IF语句中。
https://stackoverflow.com/questions/10802645
复制相似问题