是否有更短的方法来检查某个对象是否属于某组类的一部分?
使用instanceof使IF语句太长:
if($obj instanceof \Class1 || $obj instanceof \Class2 || $obj instanceof \Class3....)
这不起作用:
instance of \Class1 || \Class2 || \Class3
它假定Class2是常数..
简而言之:不
更长的答案:您可以创建变通方法,使用get_parent_class()递归来获取所有父类,然后用于array_intersect()查找是否有一个或多个类名出现在那里.然而,似乎他们的课程应该有一些共同之处.把它放到一个接口测试中.
使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语句"占用太多空间"(并不是说你应该考虑这个问题;语句应该只要它们需要).
| 归档时间: |
|
| 查看次数: |
4701 次 |
| 最近记录: |