2017-07-08 46 views
3

如何从A级呼叫功能lmn()而不触及类B如何调用保护功能?

class A extends B{ 
    public function abc(){ 
     return "abc"; 
    } 
    ... 
} 

class B{ 
    public function xyz(){ 
     return "xyz"; 
    } 
    ... 
} 

class C{ 
    protected function lmn(){ 
     return "lmn"; 
    } 
    ... 
} 

请指导我这个

+2

你不能。 B类(也不是A类)不从C类继承。 –

+0

你想给它打电话? – colburton

回答

-1

你不能把它的,因为保护的手段,是可以从子类中调用的函数。

在你的情况下,你需要创建一个B的实例在任何类中调用lmn。

1

可以做出某种代理类是由C延伸,并提供了一个公共的方法访问:

class ProcyForC extends C { 
    public function getLmn() { 
    return $this->lmn(); 
    } 
} 

echo (new ProxyForC())->getLmn();