2017-07-08 60 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();