2016-06-14 70 views
0

我對PHP面向對象編程有一些疑問。在實現期望父實例的接口方法時依賴注入子類

想象一下這樣的情景:

abstract class A {} 

class B extends A {} 

interface C { 

    public someMethod(A $a); 
} 

是否有可能,或任何其他的解決辦法,這樣做?

public class D implements C { 

    public function someMethod(B $b) { 
     // do something nice! 
    } 
} 
+1

'我對PHP面向對象編程有些懷疑。'我們都不是? :) – TerraPass

+0

檢查'instanceof'? –

回答

-1

先決條件無法在亞型得到加強。

你想毀掉LSP

你不能用PHP語言結構實現它。

此外,還要檢查這個例子

abstract class A {} 

class B extends A {} 

abstract class C { 
    public function __construct(A $a) {} 
} 

class D extends C { 
    public function __construct(B $b) { 
     // do something nice! 
    } 
} 

它僅適用於__construct