2016-06-14 82 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