Art. 122-5

Sommaire

[modifier] Un environnement de développements

On va utiliser le module Eclipse : PHPEclipse

[modifier] Installation

[modifier] Eclipse 3.1

Comme indiqué sur le site Plog4u, le mode debug de PHPEclipse 1.1.8 ne fonctionne pas avec Eclipse 3.2. On va donc installer Eclipse 3.1.

[modifier] PHPEclipse

  • Clicker sur Help->Software Updates->Find/Install dans Eclipse.
  • Choisir "search for new features to install".
  • Puis "New Remote Site"
  • Entrer un nom (PHPEclipse), et l'URL: http://phpeclipse.sourceforge.net/update/cvs
  • "Finish".
  • Sélectionner "phpeclipse" puis Next
  • Suivre les instructions pour terminer l'installation

[modifier] DBG Debugger

  • Télécharger DBG 2.15.5 dbg modules
  • Copier php_dbg.dll (win32) or dbg.so (linux) dans le répertoire ext de PHP
  • Ajouter extension=php_dbg.dll (win32) ou extension=dbg.so (linux) dans le fichier php.ini
  • Activer le debugger: Ajouter ou modifier le fichier php.ini:
      [debugger]
      debugger.enabled = true
      debugger.profiler_enabled = true
      debugger.JIT_host = clienthost
      debugger.JIT_port = 7869, 10000/16

clienthost est un mot clé de DBG. Si vous l'utiliser, DBG détectera automatiquement l'IP de chaque client.

Vous pouvez utiliser phpinfo() pour contrôler votre installation.

[modifier] Utilisation

Bon, c'est un peu galère à faire tourner, mais quand ça marche, c'est ... utile, lourd, mais utile. Cela ralenti considérablement l'exécution mais cela permet parfois de résoudre rapidement un problème ...

Il faut donc créer une nouvelle configuration de debugage dans PHP DBG Script (après avoir fait Debug As dans Eclipse). Dans la page principale on renseigne :

  • Le Projet
  • Eventuellement le fichier à debugger

Et dans l'onglet Environnement

  • Interpreter (php.exe)
  • On coche Remote Debug
  • On renseigne Remote Source Path (le chemin d'accès aux sources)

Et il n'y a plus qu'a ...

Pour activer le debugger, après avoir démarrer le debug dans Eclipse, il suffit d'ajouter le paramètre DBGSESSID=1@localhost:10001 à l'URL que l'on souhaite debugger. (10001 est le port d'écoute du debugger, visible dans la perspective Debug d'Eclipse)

Plus d'infos sur DBGSESSID

Pour que le script s'arrête sur un point d'arrêt, il doit être ouvert !

[modifier] Un Environnement de Tests Unitaires

Lorsque vous êtes tenté d'utiliser une commande print ou une expression de débugger pour écrire quelque chose, écrivez plutôt un test.

--Martin Fowler

La documentation de phpunit

[modifier] Installation

L'installation s'effectue avec Utilisation de Pear, reportez vous au manuel pour son installation.

Pour ce qui est de phpunit, on va d'abord déclarer le chanel si ce n'est déjà fait:

pear channel-discover pear.phpunit.de

Ce qui nous donne

Adding Channel "pear.phpunit.de" succeeded
Discovery of channel "pear.phpunit.de" succeeded

Puis l'installation de phpunit à proprement parlé :

pear install phpunit/PHPUnit

[modifier] Utilisation

Comme le dit l'auteur (Sebastian Bergmann) dans son livre

Il n'y a pas besoin de documentation pour PHPUnit. Lisez celle de JUnit ou achetez un livre sur JUnit et adaptez les exemples de Java et JUnit vers PHP et PHPunit

Enfin le livre est utile, mais effectivement ça reste dans la ligné des XUnit.

Toute fois parmi les choses utiles :

  • Un fichier par classe, c'est plus simple ... surtout si il porte le nom de la classe. Sinon le --skeleton a du mal ...
  • Attention au consigne de nommage PEAR utilisées pour retrouver les fichiers, mais là encore on peu ne pas respecter.
  • Générer le squelette d'une classe de Test :
phpunit --skeleton Le_nom_de_la_classe

[modifier] Mesure de couverture de tests avec XDebug

A utiliser conjointement avec PHPUnit, Xdebug donne de précieuses information concernant la couverture de test, permettant ainsi de s'assurer que tout le code est correctement outillé. En PHP plus que d'en n'importe quel langage compilé mesurer la couverture de code par les tests unitaires est un précieux gage de fiabilité.

Cela évite de finir par tomber un jour sur un cas foireux qui vous plante un site à cause d'une fonction inexistante ou d'un oublie de $ devant une variable.

Un exemple de rapport

[modifier] Installation

Simple, téléchargez le fichier correspondant à votre version de PHP sur xdebug.org (à droite), puis copiez le dans votre répertoire d'extension.

Puis, dans le php.ini de votre répertoire d'installation (utilisation en ligne de commande) et dans celui de windows (module apache) ajoutez après les extensions la ligne (en adaptant le path à votre configuration):

zend_extension_ts=F:\PHP\ext\php_xdebug-2.0.0rc3-5.2.1.dll


[modifier] Utilisation

Pour le rapport de couverture de la suite MainPackage:

phpunit --report ./report MainPackage

Le résultat

[modifier] Ressources

Anglais
Un peu de musique ?


A propos