簡體   English   中英

發現實現接口的所有類

[英]Discover all class implementing an interface

嗨,我正在使用symfony2框架來建立一個網站。 我在PHP中定義了一個接口,如:

interface AdminPluginInterface {
    public function getName();
}

現在,我想知道實現我的接口的所有可通過Symfony2 UniversalClassLoader加載的類,以如下方式使用它們:

foreach ($classes as $class)
{
    $class->getName();
}

謝謝你的回答!

由於類僅在使用時才會自動加載,因此您無法列出源代碼中的所有類。 您只能獲取已經使用的類調用get_declared_classes 一種解決方案是指定一個plugins目錄並掃描它以獲取類文件,導入它們然后使用class_implements檢查這些類是否實現了你的接口。看看這個問題的答案是否有一些代碼示例要掃描你的接口是否由一些聲明的類實現

嘗試使用is_a()函數:

foreach ($classes as $class)
{
    $classname = $class->getName();
    var_dump(is_a($classname,'AdminPluginInterface'));
}

有關更多信息,請查看:

這有點舊,但我想

class_implements()

是你需要的:)

暫無
暫無

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

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