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(). array( new Zend_CodeGenerator_Php_Class(array( 'name' => 'World', 'methods' => array( new Zend_CodeGenerator_Php_Method(array( 'name' => 'hello', 'body' => 'echo \'Hello world!\';', )), ), )), ) )); // Configuration après instanciation $method = new Zend_CodeGenerator_Php_Method(); $method->setName('hello') ->setBody('echo \'Hello world!\';'); $class = new Zend_CodeGenerator_Php_Class(); $class->setName('World') ->setMethod($method); $file = new Zend_CodeGenerator_Php_File(); $file->setClass($class); // Rendu du fichier généré: echo $file; // 2criture du fichier généré: file_put_contents('World.php', $file->generate()); ]]> Les 2 exemples ci-dessus vont rendre le même résultat : 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 : setName('mrMcFeeley') ->setBody('echo \'Hello, Mr. McFeeley!\';'); $class->setMethod($method); $file = new Zend_CodeGenerator_Php_File(); $file->setClass($class); // Rendu du code généré echo $file; // Ou encore sauvegarde par dessus l'ancien fichier file_put_contents('World.php', $file->generate()); ]]> La nouvelle classe ressemblera à ça :