Le blog de Nukleo

Autocomplete (remplissage auto) de CodeIgniter dans Netbeans

6 janvier 2011 dans Développement | 4 commentaires

L’éditeur de code Netbeans implémente par défaut le remplissage automatique (autocomplete) pour les frameworks Zend et Symfony depuis peu. Pour les autres, et notamment CodeIgniter, niet. Qu’à cela ne tienne voici comment ajouter l’autocomplete pour CodeIgniter !

J’ai trouvé cette astuce, en cherchant un peu partout une solution à ce problème, sur ce blog. Je me suis simplement permis de traduire en partie sa mise en place.

Autocomplete de base

Pour accéder à l’autocomplete des fonctions de base de CodeIgniter, il suffit simplement de créer un fichier « nom_du_fichier.php » dans le dossier de projet de Netbeans (nbproject) de votre application et d’y coller le contenu ci-dessous. Après cela, relancez Netbeans. Pour ce tutorial nous supposerons que ce fichier sera nommé « ci_autocomplete.php ».

<?php

/**
* @property CI_DB_active_record $db
* @property CI_DB_forge $dbforge
* @property CI_Benchmark $benchmark
* @property CI_Calendar $calendar
* @property CI_Cart $cart
* @property CI_Config $config
* @property CI_Controller $controller
* @property CI_Email $email
* @property CI_Encrypt $encrypt
* @property CI_Exceptions $exceptions
* @property CI_Form_validation $form_validation
* @property CI_Ftp $ftp
* @property CI_Hooks $hooks
* @property CI_Image_lib $image_lib
* @property CI_Input $input
* @property CI_Language $language
* @property CI_Loader $load
* @property CI_Log $log
* @property CI_Model $model
* @property CI_Output $output
* @property CI_Pagination $pagination
* @property CI_Parser $parser
* @property CI_Profiler $profiler
* @property CI_Router $router
* @property CI_Session $session
* @property CI_Sha1 $sha1
* @property CI_Table $table
* @property CI_Trackback $trackback
* @property CI_Typography $typography
* @property CI_Unit_test $unit_test
* @property CI_Upload $upload
* @property CI_URI $uri
* @property CI_User_agent $user_agent
* @property CI_Validation $validation
* @property CI_Xmlrpc $xmlrpc
* @property CI_Xmlrpcs $xmlrpcs
* @property CI_Zip $zip
*/

class Controller {};

/**
* @property CI_DB_active_record $db
* @property CI_DB_forge $dbforge
* @property CI_Config $config
* @property CI_Loader $load
* @property CI_Session $session
*/

class Model {};

?>

Comment ça fonctionne ?

Au lancement de Netbeans, celui-ci lit les fichiers contenus dans le répertoire nbproject (notamment project.xml et project.properties) afin de préparer l’environnement de développement.
En « lisant » le fichier ci_autocomplete.php il repère les propriétés définies dans le DocBlock pour les classes Controller et Model.
C’est cela qui lui permettra de fournir l’autocomplete lors de l’édition d’un controlleur ou d’un modèle. En parcourant le contenu du fichier on remarquera que l’on liste simplement les classes mises à disposition par CodeIgniter.

Remplissage auto de CodeIgniter dans Netbeans

Ajoutez vos propres classes

Le but de la manoeuvre étant aussi d’accéder à l’autocomplete sur vos modèles et librairies, il suffit d’éditer le fichier ci_autocomplete.php que vous venez de créer pour les y incorporer :

* @property Nom_de_votre_classe $nom_de_votre_objet

Par exemple, en ajoutant

* @property Portfolio_model $portfolio_model

dans le DocBlock Controller, vous aurez accès aux méthodes du modèle Portfolio_model lors de l’édition d’un controlleur :

Autocomplete de CodeIgniter dans Netbeans

Note : pour que toutes les fonctions de vos modèles soient également disponibles pendant l’édition d’un modèle, il faudra également ajouter les modèles dans le DocBlock du modèle.

Conclusion

Il est dommage que, par défaut, on ne puisse pas accéder à l’autocomplete des fonctions de CodeIgniter — ceci étant apparemment dû à la manière dont le code est commenté — mais grâce à cette petite astuce tout rentre dans l’ordre.
Dernier petit conseil : utilisez également les commentaires DocBlock avec vos méthodes de modèles pour facilement en afficher l’utilisation lors de l’édition de controlleurs et modèles.

Mots-clés : ,

Vous avez aimé l'article ? Partagez-le : 

Commentaires

  1. Adrien dit :

    Salut,

    Parfait comme explication, ça fait un moment que je sens que ça me manque et c’est en passant sur Netbeans 7.0 que je me suis décidé à chercher sur le net. Et je suis tombé sur ce blog.

    Malheureusement, ça ne fonctionne pas pour moi.

    Tu peux me confirmer que ça fonctionne sur Netbeans 7.0 ?

    Pas de nom particulier au fichier ? J’ai tenté le même nom que toi et le nom de mon projet, mais rien.

    Merci d’avance ;)

    • Erik dit :

      Je n’ai pas encore fait la migration sur netbeans 7.0 donc je ne sais pas si ca fonctionne, mais à priori je ne vois pas pourquoi ca ne serait pas le cas.
      Si tu es sur CodeIgniter 2+ Il faut changer class Controller{}; et class Model{}; en class CI_Controller{}; et class CI_Model{}; respectivement. Le problème pourrait venir de là.
      Sinon le nom du fichier n’a aucune importance.

  2. Martial MAREL dit :

    Bonjour,

    En m’inspirant du post sur le forum de codeigniter (en anglais) http://codeigniter.com/forums/viewthread/187949/

    1) Dans le dossier de projet de Netbeans (nbproject) de votre application
    j’ai crée un répertoire CI_Autocomplete

    2) Dans ce répertoire j’ai crée un fichier ci_autocomplete.php

    3) Pour une version de Codeigniter inférieur à la 2.0 coller le code présent dans ce billet. Pour la version 2.0 de codeigniter comme l’indique Erik,Il faut changer class Controller{}; et class Model{}; en class CI_Controller{}; et class CI_Model{}; respectivement.

    4) Préférant toujours placer les préférences de projet Netbeans à part du dossier de l’application. Il faut dans la fenêtre projet de Netbeans, faire un clique droit sur Include Path puis properties, et ajouter le dossier CI_Autocomplete

    5) Maintenant l’autocompletion pour codeigniter est disponible.

    Merci pour le billet, bonne continuation

  3. Guigui dit :

    Salut et félicitation pour ce site. Tes post sont très enrichissants.

    Continue a poster :p

    Informatiquement,
    Guillaume