簡體   English   中英

PHP:確定類是否為另一類的擴展

[英]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()

是您要尋找的。 它將返回父類的名稱。

http://www.php.net/manual/zh/function.get-parent-class.php

根據您要查找的內容,您可能還需要instanceof運算符。

如果$a是類A的實例,或者擴展了A任何類(包括如果它是擴展BC實例,擴展了A )或implements A (如果您使用接口),則$a instanceof A將為真。 。 http://php.net/instanceof

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM