1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 15998 -->
4 <sect1 id="zend.codegenerator.introduction">
5 <title>Introducción</title>
8 <classname>Zend_CodeGenerator</classname>
9 ofrece facilidades para
10 generar código arbitrario usando una interfaz orientada a objetos,
12 para crear código nuevo como para actualizar código existente.
14 implementación actual se limita a generar código
15 <acronym>PHP</acronym>
17 usted fácilmente puede extender la clase base a fin de proveer
18 generación de código para
19 otras tareas como: JavaScript, archivos de
20 configuración, apache vhost, etc.
23 <sect2 id="zend.codegenerator.introduction.theory">
24 <title>Teoría de Operación</title>
27 En el caso de uso más típico, simplemente instanciará una clase de
28 generación de código y
29 podrá pasarle tanto la configuración adecuada
30 o configurarla después de la instanciación.
31 Para generar el código,
32 simplemente haga "echo" del objeto o llame a su método
33 <methodname>generate()</methodname>
37 <programlisting language="php"><![CDATA[
38 // Pasando la configuración al constructor:
39 $file = new Zend_CodeGenerator_Php_File(array(
41 new Zend_CodeGenerator_Php_Class(array(
44 new Zend_CodeGenerator_Php_Method(array(
46 'body' => 'echo \'Hello world!\';',
53 // Configurando después de la instanciación
54 $method = new Zend_CodeGenerator_Php_Method();
55 $method->setName('hello')
56 ->setBody('echo \'Hello world!\';');
58 $class = new Zend_CodeGenerator_Php_Class();
59 $class->setName('World')
62 $file = new Zend_CodeGenerator_Php_File();
63 $file->setClass($class);
65 // Mostrar el archivo generado
68 // o grabarlo a un archivo:
69 file_put_contents('World.php', $file->generate());
73 Ambos ejemplos anteriores mostrarán el mismo resultado:
76 <programlisting language="php"><![CDATA[
82 public function hello()
91 Otro caso de uso común es actualizar el código actual -- por ejemplo,
93 método a una clase. En ese caso, primero debe
94 inspeccionar el código actual utilizando
96 añadir su nuevo método.
97 <classname>Zend_CodeGenerator</classname>
98 lo hace trivialmente simple,
100 <link linkend="zend.reflection">Zend_Reflection</link>
105 Como ejemplo, digamos que hemos grabado lo anterior al archivo
107 <filename>World.php</filename>
108 ", y que ya está incluído. Podríamos entonces hacer lo
112 <programlisting language="php"><![CDATA[
113 $class = Zend_CodeGenerator_Php_Class::fromReflection(
114 new Zend_Reflection_Class('World')
117 $method = new Zend_CodeGenerator_Php_Method();
118 $method->setName('mrMcFeeley')
119 ->setBody('echo \'Hello, Mr. McFeeley!\';');
120 $class->setMethod($method);
122 $file = new Zend_CodeGenerator_Php_File();
123 $file->setClass($class);
125 // Mostrar el archivo generado
128 // O mejor aún, volver a grabarlo al archivo original:
129 file_put_contents('World.php', $file->generate());
133 El archivo de la clase resultante se vería así:
136 <programlisting language="php"><![CDATA[
142 public function hello()
147 public function mrMcFeeley()
149 echo 'Hellow Mr. McFeeley!';