| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.codegenerator.introduction">
- <title>Introduction</title>
- <para>
- <classname>Zend_CodeGenerator</classname> est un outils permettant de générer du code
- <acronym>PHP</acronym> 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.
- </para>
- <sect2 id="zend.codegenerator.introduction.theory">
- <title>Théorie</title>
- <para>
- 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 <methodname>generate()</methodname>.
- </para>
- <programlisting language="php"><![CDATA[
- // Passage de configuration au constructor:
- $file = new Zend_CodeGenerator_Php_File(array(
- 'classes' => 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());
- ]]></programlisting>
- <para>Les 2 exemples ci-dessus vont rendre le même résultat :</para>
- <programlisting language="php"><![CDATA[
- <?php
- class World
- {
- public function hello()
- {
- echo 'Hello world!';
- }
- }
- ]]></programlisting>
- <para>
- 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. <classname>Zend_CodeGenerator</classname>
- rend ceci très simple en utilisant <link
- linkend="zend.reflection">Zend_Reflection</link>.
- </para>
- <para>
- Par exemple, imaginons que nous avons sauvegardé le code de l'exemple ci-dessus
- dans un fichier "<filename>World.php</filename>" que nous avons alors inclus.
- Nous pourrions dès lors agir comme suit :
- </para>
- <programlisting language="php"><![CDATA[
- $class = Zend_CodeGenerator_Php_Class::fromReflection(
- new Zend_Reflection_Class('World')
- );
- $method = new Zend_CodeGenerator_Php_Method();
- $method->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());
- ]]></programlisting>
- <para>La nouvelle classe ressemblera à ça :</para>
- <programlisting language="php"><![CDATA[
- <?php
- class World
- {
- public function hello()
- {
- echo 'Hello world!';
- }
- public function mrMcFeeley()
- {
- echo 'Hellow Mr. McFeeley!';
- }
- }
- ]]></programlisting>
- </sect2>
- </sect1>
|