我需要獲取已擴展另一個父類的所有聲明類。PHP OOP:獲取已擴展另一個父類的所有聲明類
因此,例如...
class ParentClass {
}
class ChildOne extends ParentClass {
}
class ChildTwo extends ParentClass {
}
class ChildThree {
}
我需要輸出這樣的數組:
array('ChildOne', 'ChildTwo')
我是新來的PHP OOP,但基於一些谷歌搜索,我想出了此解決方案。
$classes = array();
foreach(get_declared_classes() as $class) {
if (is_subclass_of($class, 'ParentClass')){
array_push($classes, $class);
}
}
我想問的是,這是做我想做的最好的做法,還是有更好的方法?全球範圍將包含許多其他不屬於ParentClass
的子類。循環遍歷所有已聲明的類是最好的方法嗎?
編輯(澄清目的):
我想實現與這個實例擴展父類的每個子類。
我想爲ParentClass
的每個孩子做$childone = new ChildOne; $childtwo = new ChildTwo;
。
據我所知,這是做到這一點的唯一方法。但是你想做什麼?你能避免反思嗎? –
而不是'array_push($ classes,$ class);'我會用:'$ classes [] = $ class;'。無論如何,否則代碼看起來很好。無論如何,這是有點離題,國際海事組織。 – Leri
我同意Will Vousden的觀點,反思會變得緩慢,對於你的開發人員不直觀,IDE不能通過它瀏覽... –