0
現有項目我的工作,我們有以下的情況:PHP檢查是否實際類實現接口
interface A { }
class B implements A { }
class C extends B { }
class D extends B implements A { }
$B = new B();
$C = new C();
$D = new D();
什麼是要弄清楚,如果實際的類實現接口的正確方法A而不僅僅是父類?支票應該返回真實爲$ B和$ D和假爲$ C.通常情況下,你會這樣做
if($C instanceof A) { //do the work }
但在我們的情況下,這將返回true,不應該。
一種方法可以是解析文件並測試該類是否真正實現了A與token_get_all函數。但在這之前,我想問問是否有更優雅的解決方案。
我知道這聽起來很奇怪,但情況是如此,並且類層次結構無法更改。任何見解都會有所幫助。
如果B實現了A,那麼所有擴展B的類都不會自動實現A嗎? – Guiroux
是的,但我只需要實際具有實現A語句的類。給出層次結構是因爲它是一箇舊的遺留系統。 – Laoneo
'但我只需要實際具有實現語句的類'你能解釋一下這個問題而不用深入解釋嗎? – Guiroux