Il arrive parfois que notre IDE ne nous propose pas d’ autocomplétion lorsque nous utilisons des Singletons ou que nous créons des instances dynamiquement. Ayant déjà eu affaire à ce problème, je vous propose ici 2 solutions simples pour palier à ça.

A noter que j’illustre mes exemples avec PHP et les docblocks d’ApiGen, mais qu’il est possible d’utiliser avec à peu près tous les langages un utilisant d’autres API comme Javadoc.

Autocomplétion dans le code

Prenons un simple exemple :

ide-autocomplete

Ici, rien n’indique à l’IDE que $myclass  est une instance de ABC . Pour cela, il suffit d’insérer un commentaire de bloc en précisant le type de variable, comme suit :

/* @var $myclass \ABC */

Le résultat en image :

ide-autocomplete2

Facile non ?

Typage de retour

L’autre solution qui n’est utilisable que dans une fonction où un objet est retourné, est de préciser le type d’objet dans le commentaire :

class ABC
{
    public function test() {}
}

class Demo
{
    /**
     * @return \ABC
     */
    public function factoryABC()
    {
        $classname = "ABC";
        return new $classname;
    }
}

$demo = new Demo();

$abc = $demo->factoryABC();

En image :

ide-autocomplete3

Pas plus compliqué que ça !

PS : Tests effectués sous Netbeans et Eclipse uniquement, ne me rouez pas de coups si cela ne fonctionne pas avec votre IDE exotique ^^

Plus loin

Pour ceux qui veulent aller plus loin, sachez par exemple qu’il est possible d’utiliser un fichier .php en dehors de votre projet, et d’utiliser les blocs de commentaires pour associer des propriétés à des noms de classe sans changer le code source (utilisation d’un framework tiers par exemple).

Un très bon exemple pour auto-compléter les classes de Code Igniter avec Netbeans est disponible sur Stack Overflow.