我想使用同一段代碼來管理多個實體,但它可能有點不同,具體取決於它是否具有某種方法。這就是爲什麼我需要檢查對象是否有名稱的方法。有沒有辦法做到這一點?如何在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. 如何檢查對象是否支持vba中的方法?
- 2. Python:如何檢查對象的屬性是否是方法?
- 3. RSpec。如何檢查對象方法是否被調用?
- 4. 如何檢查對象是否在Domain對象的集合中?
- 5. ruby檢查對象是否在數組中的方法
- 6. 在python中如何檢查一個對象是否有值?
- 7. 如何檢查對象是否是Cocoa中的Foundation對象?
- 8. 如何在Python中檢查對象所具有的方法?
- 9. 如何檢查對象是否爲UIButton
- 10. 如何檢查對象是否爲空
- 11. 如何檢查私有方法是否在ruby中定義
- 12. jQuery檢查值是否在對象中
- 13. 檢查對象是否在路徑中
- 14. 檢查對象是否存在的最快方法
- 15. 檢查PowerShell對象是否存在的最佳方法?
- 16. 如何檢查Ruby對象的方法?
- 17. 如何檢查在JavaScript中的對象中是否存在值
- 18. 如何在C中檢查對象是否是數字#
- 19. 如何檢查PHP對象是否是MongoDate對象?
- 20. 如何在VB中檢查對象的類型6 - 是否有任何方法,而不是'TypeName'
- 21. 檢查對象是否有效?
- 22. 檢查對象是否有焦點
- 23. 檢查對象是否具有屬性
- 24. 在Rails/Ruby中檢查對象是否存在的正確方法是什麼?
- 25. 如何快速檢查NSString對象是否是有效的url?
- 26. 如何檢查對象是否有respond_to? MyObject#attr_reader:my_property但不是setter
- 27. 如何在JavaScript中檢查嵌套對象中是否存在空對象?
- 28. Mongoengine檢查對象是否存在,但沒有獲取對象
- 29. 有沒有辦法檢查兩個對象在Java中是否是別名?
- 30. 如何檢查對象是否不在mongoDb中的數組中?