Zend_CodeGenerator

Introduction

Zend_CodeGenerator est un outils permettant de générer du code PHP en utilisant une interface orientée objet. Il peut générer ou mettre à jour du code. Il est aussi possible d'étendre ces classes afin de changer le langage de référence pour générer du Javascript, des hôtes virtuels Apache ..., par exemple.

Théorie

Dans la plupart des cas, vous créerez une instance du générateur de code, et vous le configurez. Pour afficher le code généré, un simple echo suffira, ou l'appel à sa méthode generate().

  1. // Passage de configuration au constructor:
  2. 'classes''name'    => 'World',
  3.             'methods''name' => 'hello',
  4.                     'body' => 'echo \'Hello world!\';',
  5.                 )),
  6.             ),
  7.         )),
  8.     )
  9. ));
  10.  
  11. // Configuration après instanciation
  12. 'hello')
  13.        ->setBody('echo \'Hello world!\';''World'// Rendu du fichier généré:
  14. // 2criture du fichier généré:
  15. 'World.php'

Les 2 exemples ci-dessus vont rendre le même résultat :

  1. span style="color: #ff0000;">'Hello world!';
  2.     }
  3.  
  4. }

Il est aussi possible de mettre à jour un code existant, par exemple, ajouter une méthode à une classe. Dans ce cas, vous devez inspecter le code existant en utilisant la réflexion, puis ajouter une nouvelle méthode. Zend_CodeGenerator rend ceci très simple en utilisant Zend_Reflection.

Par exemple, imaginons que nous avons sauvegardé le code de l'exemple ci-dessus dans un fichier "World.php" que nous avons alors inclus. Nous pourrions dès lors agir comme suit :

  1. span style="color: #ff0000;">'World''mrMcFeeley')
  2.        ->setBody('echo \'Hello, Mr. McFeeley!\';'// Rendu du code généré
  3. // Ou encore sauvegarde par dessus l'ancien fichier
  4. 'World.php'

La nouvelle classe ressemblera à ça :

  1. span style="color: #ff0000;">'Hello world!''Hellow Mr. McFeeley!';
  2.     }
  3.  
  4. }

Zend_CodeGenerator