2016-04-11 12 views
0

Ok, Titel ziemlich seltsam klingt, aber hier ist die Situation:PHPDoc: geschützte Methode für Eigenschaft beschreiben

class A 
{ 
    use AA; 

    protected function methodOfA() {} 
} 

/** 
* @method void methodOfA() 
*/ 
trait AA 
{ 
    public function methodOfAA() 
    { 
    $this->methodOfA(); 
    } 
} 

Also auf IDE haben (in meinem Fall PhpStorm) Auto-Vervollständigung Magie, ich @method Beschreibung manuell deklarieren AA zu charakterisieren, und alles sieht gut aus, bis ich zurück in die Klasse A gehe, wo der Code-Inspektor sagt: 'Kann die öffentliche Methode AA-> methodOfA protected' nicht machen. Also Frage ist, ob es eine Möglichkeit gibt, Methoden in diesem Fall korrekt zu deklarieren? Oder ist vielleicht die ganze Vorstellung falsch?

Antwort

0

Zuerst haben Sie einen Namenskonflikt, Ihr Merkmal hat methodOfAA() und Ihre Klasse A tut auch, jetzt ist die Sichtbarkeit in der Eigenschaft auf öffentlich und in der Klasse ist es geschützt, so dass ein Konflikt ist, was Sie tun können das Verfahren in Trait wird nennen als auch geschützt, wenn das ist, was du so do..something beabsichtigen,

class A 
{ 
    use AA{ methodOfAA as protected; } 

    protected function methodOfA() {} 
} 
+2

Nicht genau ... Klasse A hat methodOfA und Trait AA hat methodOfAA. Wie auch immer, phpStorm vervollkommnet erfolgreich Trait-Methoden in Klasse A. Problem ist, wie man Trait AA sagt, dass es Methoden von Klasse A hat. – David