![](/img/trans.png)
[英]In php, is there any way to determine whether ::class was used when generating a string?
[英]PHP: Determine whether class is extension of another class
您如何測試以查看一個類是否通過名稱擴展了另一個類?
class A { ... }
class B extends A { ... }
class C { ... }
$class_name = 'B';
if (class_extends_another($class_name, 'A')) {
// Yep
}
$class_name = 'C';
if (class_extends_another($class_name, 'A')) {
// Nope
}
我曾經以為class_parents函數將是最簡單的解決方案,盡管應該注意的是,此功能僅在PHP 5.1及更高版本中可用。
例如,如果您想查看'B'是否擴展為'A',則可以使用:
if(in_array('A', class_parents('B'))) {
// B extends A.
}
順便說一句,應該注意,根據文檔,您可以向class_parents
函數提供對象(類實例)或字符串(類名稱),這可能會很有用。
我認為
get_parent_class()
是您要尋找的。 它將返回父類的名稱。
根據您要查找的內容,您可能還需要instanceof
運算符。
如果$a
是類A
的實例,或者擴展了A
任何類(包括如果它是擴展B
的C
實例,擴展了A
)或implements A
(如果您使用接口),則$a instanceof A
將為真。 。 見http://php.net/instanceof
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.