2017-07-08 14 views
3

Wie Funktion B von Klasse lmn() ohne sich zu berühren Klasse nennen ASo rufen Sie die geschützte Funktion auf?

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

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

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

bitte leite mich für dieses

+2

Sie können nicht. Klasse B (noch Klasse A) erbt nicht von Klasse C. –

+0

Wo möchten Sie es nennen? – colburton

Antwort

-1

Sie können es da geschützt Mittel nicht nennen eine Funktion zu sein, die von den untergeordneten Klassen aufgerufen werden kann.

In Ihrem Fall müssen Sie eine Instanz von B erstellen, um lmn in welcher Klasse auch immer aufzurufen.

1

Sie können eine Art von Proxy-Klasse machen, die von C erstreckt und eine öffentliche Methode für den Zugriff:

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

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