2010-03-23 13 views
3

J'ai une classe de base abstraite:Obtenir l'achèvement du code PDT pour reconnaître les types de retour d'exécution de la classe de base?

abstract class BaseClass { 
    /** 
    * @return CLASSNAME 
    */ 
    public function fluent() { 
    // do stuff 
    return $this; 
    } 
} 

En général, je mettrais BaseClass où CLASSNAME est et tout irait bien, PDT choisirait le type de retour phpdoc et heureusement autocomplete. En attendant, c'est-à-dire, je sous-classe BaseClass et j'ajoute des méthodes supplémentaires, et le code concurrence sur une instance de la classe dérivée. PDT reconnaît uniquement les méthodes de BaseClass et non celles de la classe dérivée.

Ce dont j'ai besoin, c'est quelque chose comme @return self ou @return this.

Est-ce que PDT a une telle fonctionnalité? Ou existe-t-il une astuce alternative sans avoir à déclarer ces méthodes dans chaque classe dérivée?

Répondre

2

AFAIK il n'y a pas cette fonctionnalité dans la PDT, mais vous pouvez utiliser au moins indice de type:

$obj = $osomething->fluent(); 
/* @var $obj ChildClass */ 

alors vous avez toutes les méthodes de saisie semi-automatique en dérivé. Je sais qu'il est ennuyeux d'écrire ce commentaire chaque fois que vous appelez fluent(), mais il est toujours préférable de redéfinir les méthodes dans chaque classe dérivée encore et encore ...