我想使用同一段代码来管理多个实体,但它可能有点不同,具体取决于它是否具有某种方法。这就是为什么我需要检查对象是否有名称的方法。有没有办法做到这一点?如何在Symfony2中检查对象是否有方法
3
A
回答
9
您可以简单地使用is_callable
:
if (is_callable([$entity, 'methodName']))
doSomething();
更简洁的方法是使用instanceof
检查对象的类。因为方法会来来去去,但是物体的性质取决于它的类别:
if ($entity instanceof \Some\Bundle\Entity\Class)
doSomething();
5
这与Symfony无关,它是基本的PHP事情:使用method_exists PHP函数。
bool method_exists (mixed $object , string $method_name)
虽然这是一个完全正常的方式去解决它,你可能想看看接口作为一种替代方案:PHP Interfaces
如果你决定使用它们,就可以只是检查的对象是你的接口的实例:
interface MyAwesomeInterface
{
public function myFunction();
}
if ($myObject instanceof MyAwesomeInterface) {
$myObject->myFunction();
}
相关问题
- 1. 如何检查对象是否具有某些方法/属性?
- 2. 检查对象是否在Java中有方法?
- 3. 如何检查对象是否支持vba中的方法?
- 4. Python:如何检查对象的属性是否是方法?
- 5. 如何检查对象是否存在?
- 6. 如何检查Symfony2中的Twig模板引擎中是否存在对象?
- 7. RSpec。如何检查对象方法是否被调用?
- 8. 如何检查对象列表中是否存在对象?
- 9. 如何检查对象是否在Domain对象的集合中?
- 10. ruby检查对象是否在数组中的方法
- 11. 检查对象中是否有空值
- 12. 如何检查对象是否是Cocoa中的Foundation对象?
- 13. 如何检查路由在Symfony2中是否有参数?
- 14. 在python中如何检查一个对象是否有值?
- 15. 检查Flash对象是否具有JavaScript内的方法
- 16. 检查是否是DJANGO对象有效
- 17. 如何在Python中检查对象所具有的方法?
- 18. 如何检查对象是否为空
- 19. 如何检查对象是否为UIButton
- 20. 如何检查对象是否为空?
- 21. 如何检查对象是否为空
- 22. 如何检查对象是否为“空”?
- 23. 如何检查私有方法是否在ruby中定义
- 24. 检查对象是否在路径中
- 25. 检查VBScript中是否存在对象
- 26. 检查QuerySet中是否存在对象
- 27. 检查对象中是否存在值
- 28. jQuery检查值是否在对象中
- 29. 正确的方法来检查是否有任何对象是SyntheticEvent?
- 30. 检查对象是否存在的最快方法