Zend_CodeGenerator-Reference.xml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 18423 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.codegenerator.reference">
  5. <title>Referencias de Zend_CodeGenerator</title>
  6. <sect2 id="zend.codegenerator.reference.abstracts">
  7. <title>Clases Abstractas e Interfaces</title>
  8. <sect3 id="zend.codegenerator.reference.abstracts.abstract">
  9. <title>Zend_CodeGenerator_Abstract</title>
  10. <para> La clase base desde la cual heredan todos las clases
  11. CodeGenerator proporciona la funcionalidad mínima necesaria. Su
  12. <acronym>API</acronym> es la siguiente: </para>
  13. <programlisting language="php"><![CDATA[
  14. abstract class Zend_CodeGenerator_Abstract
  15. {
  16. final public function __construct(Array $options = array())
  17. public function setOptions(Array $options)
  18. public function setSourceContent($sourceContent)
  19. public function getSourceContent()
  20. protected function _init()
  21. protected function _prepare()
  22. abstract public function generate();
  23. final public function __toString()
  24. }
  25. ]]></programlisting>
  26. <para> El constructor primero llama a
  27. <methodname>_init()</methodname> (que se deja vacía para
  28. implementar extenciones a clases concretas), se pasa entonces el
  29. parámetro <varname>$options</varname> a
  30. <methodname>setOptions()</methodname>, y finalmente se llama
  31. a <methodname>_prepare()</methodname> (nuevamente, a ser
  32. implementada por extensión de una clase) </para>
  33. <para> Al igual que la mayoría de las clases en Zend Framework,
  34. <methodname>setOptions()</methodname> compara una opción
  35. clave con setters existentes en la clase, y pasa el valor de ese
  36. método si lo encuentra. </para>
  37. <para>
  38. <methodname>__toString()</methodname> es marcado como final, y
  39. proxies a <methodname>generate()</methodname>. </para>
  40. <para>
  41. <methodname>setSourceContent()</methodname> y
  42. <methodname>getSourceContent()</methodname> están destinados
  43. ya sea para fijar el valor por defecto del contenido para el
  44. código a ser generado, o para sustituir dicho contenido una vez
  45. que se completen todas las tareas de generación. </para>
  46. </sect3>
  47. <sect3 id="zend.codegenerator.reference.abstracts.php-abstract">
  48. <title>Zend_CodeGenerator_Php_Abstract</title>
  49. <para>
  50. <classname>Zend_CodeGenerator_Php_Abstract</classname> extiende
  51. <classname>Zend_CodeGenerator_Abstract</classname>, y añade
  52. algunas propiedades para localizar su contenido si es que ha
  53. cambiado, así como el nivel de identación que debe aparecer
  54. antes del contenido generado. Su <acronym>API</acronym> es la
  55. siguiente: </para>
  56. <programlisting language="php"><![CDATA[
  57. abstract class Zend_CodeGenerator_Php_Abstract
  58. extends Zend_CodeGenerator_Abstract
  59. {
  60. public function setSourceDirty($isSourceDirty = true)
  61. public function isSourceDirty()
  62. public function setIndentation($indentation)
  63. public function getIndentation()
  64. }
  65. ]]></programlisting>
  66. </sect3>
  67. <sect3 id="zend.codegenerator.reference.abstracts.php-member-abstract">
  68. <title>Zend_CodeGenerator_Php_Member_Abstract</title>
  69. <para>
  70. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> es
  71. una clase base para generar los miembros de clase -- propiedades
  72. y métodos -- y brinda accesos y mutadores para establecer
  73. visibilidad; ya sea el miembro abstracto o no, estático o
  74. definitivo; y el nombre del miembro. Su <acronym>API</acronym>
  75. es la siguiente: </para>
  76. <programlisting language="php"><![CDATA[
  77. abstract class Zend_CodeGenerator_Php_Member_Abstract
  78. extends Zend_CodeGenerator_Php_Abstract
  79. {
  80. public function setAbstract($isAbstract)
  81. public function isAbstract()
  82. public function setStatic($isStatic)
  83. public function isStatic()
  84. public function setVisibility($visibility)
  85. public function getVisibility()
  86. public function setName($name)
  87. public function getName()
  88. }
  89. ]]></programlisting>
  90. </sect3>
  91. </sect2>
  92. <sect2 id="zend.codegenerator.reference.concrete">
  93. <title>Clases Concretas de CodeGenerator</title>
  94. <sect3 id="zend.codegenerator.reference.concrete.php-body">
  95. <title>Zend_CodeGenerator_Php_Body</title>
  96. <para>
  97. <classname>Zend_CodeGenerator_Php_Body</classname> se destina
  98. para generar código procedural arbitrario para incluir dentro de
  99. un archivo. Como tal, usted simplemente establece contenidos
  100. para el objeto, y éste devolverá el contenido cuando usted
  101. invoque a <methodname>generate()</methodname>. </para>
  102. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  103. <programlisting language="php"><![CDATA[
  104. class Zend_CodeGenerator_Php_Body extends Zend_CodeGenerator_Php_Abstract
  105. {
  106. public function setContent($content)
  107. public function getContent()
  108. public function generate()
  109. }
  110. ]]></programlisting>
  111. </sect3>
  112. <sect3 id="zend.codegenerator.reference.concrete.php-class">
  113. <title>Zend_CodeGenerator_Php_Class</title>
  114. <para>
  115. <classname>Zend_CodeGenerator_Php_Class</classname> Está
  116. destinado a generar clases <acronym>PHP</acronym>. La
  117. funcionalidad básica sólo genera la clase <acronym>PHP</acronym>
  118. en si misma, así como opcionalmente el <acronym>PHP</acronym>
  119. DocBlock. Las clases pueden implementarse o heredarse de otras
  120. clases, y pueden ser marcadas como abstractas. Utilizando otras
  121. clases generadoras de código, también puede agregar constantes
  122. de clase, propiedades y métodos. </para>
  123. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  124. <programlisting language="php"><![CDATA[
  125. class Zend_CodeGenerator_Php_Class extends Zend_CodeGenerator_Php_Abstract
  126. {
  127. public static function fromReflection(
  128. Zend_Reflection_Class $reflectionClass
  129. )
  130. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  131. public function getDocblock()
  132. public function setName($name)
  133. public function getName()
  134. public function setAbstract($isAbstract)
  135. public function isAbstract()
  136. public function setExtendedClass($extendedClass)
  137. public function getExtendedClass()
  138. public function setImplementedInterfaces(Array $implementedInterfaces)
  139. public function getImplementedInterfaces()
  140. public function setProperties(Array $properties)
  141. public function setProperty($property)
  142. public function getProperties()
  143. public function getProperty($propertyName)
  144. public function setMethods(Array $methods)
  145. public function setMethod($method)
  146. public function getMethods()
  147. public function getMethod($methodName)
  148. public function hasMethod($methodName)
  149. public function isSourceDirty()
  150. public function generate()
  151. }
  152. ]]></programlisting>
  153. <para> El método <methodname>setProperty()</methodname> acepta un
  154. array de información que puede ser utilizada para generar una
  155. instancia <classname>Zend_CodeGenerator_Php_Property</classname>
  156. -- o simplemente una instancia de
  157. <classname>Zend_CodeGenerator_Php_Property</classname>.
  158. Análogamente, <methodname>setMethod()</methodname> acepta o un
  159. array de información para generar una instancia de
  160. <classname>Zend_CodeGenerator_Php_Method</classname> o una
  161. instancia concreta de esa clase. </para>
  162. <para> Se debe observar que <methodname>setDocBlock()</methodname>
  163. espera una instancia de
  164. <classname>Zend_CodeGenerator_Php_DocBlock</classname>.
  165. </para>
  166. </sect3>
  167. <sect3 id="zend.codegenerator.reference.concrete.php-docblock">
  168. <title>Zend_CodeGenerator_Php_Docblock</title>
  169. <para>
  170. <classname>Zend_CodeGenerator_Php_Docblock</classname> puede ser
  171. utilizada para generar <acronym>PHP</acronym> docblocks
  172. arbitrarios, incluidas todas las características estándar de
  173. docblock: descripciones cortas y largas y además los tags de
  174. anotaciones. </para>
  175. <para> Los tags de anotación pueden establecerse utilizando los
  176. métodos <methodname>setTag()</methodname> y
  177. <methodname>setTags()</methodname>; cada una de estas toman
  178. o un array describiendo el tag que puede ser pasado al
  179. constructor
  180. <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname>,
  181. o una instancia de esa clase. </para>
  182. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  183. <programlisting language="php"><![CDATA[
  184. class Zend_CodeGenerator_Php_Docblock extends Zend_CodeGenerator_Php_Abstract
  185. {
  186. public static function fromReflection(
  187. Zend_Reflection_Docblock $reflectionDocblock
  188. )
  189. public function setShortDescription($shortDescription)
  190. public function getShortDescription()
  191. public function setLongDescription($longDescription)
  192. public function getLongDescription()
  193. public function setTags(Array $tags)
  194. public function setTag($tag)
  195. public function getTags()
  196. public function generate()
  197. }
  198. ]]></programlisting>
  199. </sect3>
  200. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag">
  201. <title>Zend_CodeGenerator_Php_Docblock_Tag</title>
  202. <para>
  203. <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> está
  204. destinado a crear tags de anotaciones arbitrarias para su
  205. inclusión en <acronym>PHP</acronym> docblocks. Se espera que los
  206. tags (etiquetas) contengan un nombre (la porción que sigue
  207. inmediatamente después del símbolo '@') y una descripción (todo
  208. lo que sigue después del nombre del tag). </para>
  209. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  210. <programlisting language="php"><![CDATA[
  211. class Zend_CodeGenerator_Php_Docblock_Tag
  212. extends Zend_CodeGenerator_Php_Abstract
  213. {
  214. public static function fromReflection(
  215. Zend_Reflection_Docblock_Tag $reflectionTag
  216. )
  217. public function setName($name)
  218. public function getName()
  219. public function setDescription($description)
  220. public function getDescription()
  221. public function generate()
  222. }
  223. ]]></programlisting>
  224. </sect3>
  225. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-param">
  226. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Param</title>
  227. <para>
  228. <classname>Zend_CodeGenerator_Php_DocBlock_Tag_Param</classname>
  229. es una versión especializada de
  230. <classname>Zend_CodeGenerator_Php_DocBlock_Tag</classname>,
  231. y representa un parámetro del método. El nombre del tag es por
  232. lo tanto ("param"), pero debido al formato de este tag de
  233. anotación, es necesaria información adicional a fin de
  234. generarla: el nombre del parámetro y el tipo de datos que
  235. representa. </para>
  236. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  237. <programlisting language="php"><![CDATA[
  238. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  239. extends Zend_CodeGenerator_Php_Docblock_Tag
  240. {
  241. public static function fromReflection(
  242. Zend_Reflection_Docblock_Tag $reflectionTagParam
  243. )
  244. public function setDatatype($datatype)
  245. public function getDatatype()
  246. public function setParamName($paramName)
  247. public function getParamName()
  248. public function generate()
  249. }
  250. ]]></programlisting>
  251. </sect3>
  252. <sect3
  253. id="zend.codegenerator.reference.concrete.php-docblock-tag-return">
  254. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Return</title>
  255. <para> Al igual la variante del tag docblock,
  256. <classname>Zend_CodeGenerator_Php_Docblock_Tab_Return</classname>
  257. es una variante de un tag de anotación para representar el valor
  258. de retorno del método. En este caso, el nombre del tag de
  259. anotación es conocido ("return"), pero requiere un tipo de
  260. retorno. </para>
  261. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  262. <programlisting language="php"><![CDATA[
  263. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  264. extends Zend_CodeGenerator_Php_Docblock_Tag
  265. {
  266. public static function fromReflection(
  267. Zend_Reflection_Docblock_Tag $reflectionTagReturn
  268. )
  269. public function setDatatype($datatype)
  270. public function getDatatype()
  271. public function generate()
  272. }
  273. ]]></programlisting>
  274. </sect3>
  275. <sect3 id="zend.codegenerator.reference.concrete.php-file">
  276. <title>Zend_CodeGenerator_Php_File</title>
  277. <para>
  278. <classname>Zend_CodeGenerator_Php_File</classname> se utiliza
  279. para generar el contenido íntegro de un archivo que contiene
  280. código <acronym>PHP</acronym>. El archivo puede contener clases
  281. o código <acronym>PHP</acronym> arbitrario, así como un archivo
  282. de nivel docblock si así lo desea. </para>
  283. <para> Cuando se agregan clases al archivo, necesitará pasar o un
  284. array de información para pasar al constructor
  285. <classname>Zend_CodeGenerator_Php_Class</classname>, o una
  286. instancia de esa clase. De manera similar, con docblocks, usted
  287. tendrá que pasar información para que lo consuma el constructor
  288. <classname>Zend_CodeGenerator_Php_Docblock</classname> o una
  289. instancia de la clase. </para>
  290. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  291. <programlisting language="php"><![CDATA[
  292. class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
  293. {
  294. public static function fromReflectedFilePath(
  295. $filePath,
  296. $usePreviousCodeGeneratorIfItExists = true,
  297. $includeIfNotAlreadyIncluded = true)
  298. public static function fromReflection(Zend_Reflection_File $reflectionFile)
  299. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  300. public function getDocblock()
  301. public function setRequiredFiles($requiredFiles)
  302. public function getRequiredFiles()
  303. public function setClasses(Array $classes)
  304. public function getClass($name = null)
  305. public function setClass($class)
  306. public function setFilename($filename)
  307. public function getFilename()
  308. public function getClasses()
  309. public function setBody($body)
  310. public function getBody()
  311. public function isSourceDirty()
  312. public function generate()
  313. }
  314. ]]></programlisting>
  315. </sect3>
  316. <sect3 id="zend.codegenerator.reference.concrete.php-member-container">
  317. <title>Zend_CodeGenerator_Php_Member_Container</title>
  318. <para>
  319. <classname>Zend_CodeGenerator_Php_Member_Container</classname>
  320. es usado internamente por
  321. <classname>Zend_CodeGenerator_Php_Class</classname> para
  322. seguir la pista de los los miembros de la clase -- a propiedades
  323. y métodos por igual. Estos están indexados por nombre,
  324. utilizando las instancias concretas de los miembros como
  325. valores. </para>
  326. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  327. <programlisting language="php"><![CDATA[
  328. class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
  329. {
  330. public function __construct($type = self::TYPE_PROPERTY)
  331. }
  332. ]]></programlisting>
  333. </sect3>
  334. <sect3 id="zend.codegenerator.reference.concrete.php-method">
  335. <title>Zend_CodeGenerator_Php_Method</title>
  336. <para>
  337. <classname>Zend_CodeGenerator_Php_Method</classname> describe un
  338. método de clase, y puede generar tanto el código y el docblock
  339. para el método. La visibilidad y condición estática, abstracta,
  340. o se puede indicar como final, por su clase padre,
  341. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname>.
  342. Finalmente, pueden especificarse los parámetros y valor de
  343. retorno para el método. </para>
  344. <para> Pueden establecerse los parámetros usando
  345. <methodname>setParameter()</methodname> o
  346. <methodname>setParameters()</methodname>. En cada caso, un
  347. parámetro debe ser un array de información para pasar al
  348. constructor
  349. <classname>Zend_CodeGenerator_Php_Parameter</classname> o
  350. una instancia de esa clase. </para>
  351. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  352. <programlisting language="php"><![CDATA[
  353. class Zend_CodeGenerator_Php_Method
  354. extends Zend_CodeGenerator_Php_Member_Abstract
  355. {
  356. public static function fromReflection(
  357. Zend_Reflection_Method $reflectionMethod
  358. )
  359. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  360. public function getDocblock()
  361. public function setFinal($isFinal)
  362. public function setParameters(Array $parameters)
  363. public function setParameter($parameter)
  364. public function getParameters()
  365. public function setBody($body)
  366. public function getBody()
  367. public function generate()
  368. }
  369. ]]></programlisting>
  370. </sect3>
  371. <sect3 id="zend.codegenerator.reference.concrete.php-parameter">
  372. <title>Zend_CodeGenerator_Php_Parameter</title>
  373. <para>
  374. <classname>Zend_CodeGenerator_Php_Parameter</classname> puede
  375. ser utilizada para especificar parámetros del método. Cada
  376. parámetro puede tener una posición (si no están especificados,
  377. se usarán en el orden que estén registrados en el método), son
  378. oblogatorios un valor por defecto, un tipo de datos y un nombre
  379. de parámetro. </para>
  380. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  381. <programlisting language="php"><![CDATA[
  382. class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
  383. {
  384. public static function fromReflection(
  385. Zend_Reflection_Parameter $reflectionParameter
  386. )
  387. public function setType($type)
  388. public function getType()
  389. public function setName($name)
  390. public function getName()
  391. public function setDefaultValue($defaultValue)
  392. public function getDefaultValue()
  393. public function setPosition($position)
  394. public function getPosition()
  395. public function getPassedByReference()
  396. public function setPassedByReference($passedByReference)
  397. public function generate()
  398. }
  399. ]]></programlisting>
  400. <para>
  401. There are several problems that might occur when trying to set null, booleans or
  402. arrays as default values. For this the value holder object
  403. <classname>Zend_CodeGenerator_Php_ParameterDefaultValue</classname> can be used,
  404. for example:
  405. </para>
  406. <programlisting language="php"><![CDATA[
  407. $parameter = new Zend_CodeGenerator_Php_Parameter();
  408. $parameter->setDefaultValue(
  409. new Zend_CodeGenerator_Php_Parameter_DefaultValue("null")
  410. );
  411. $parameter->setDefaultValue(
  412. new Zend_CodeGenerator_Php_Parameter_DefaultValue("array('foo', 'bar')")
  413. );
  414. ]]></programlisting>
  415. <para>
  416. Internally <methodname>setDefaultValue()</methodname> also converts the values
  417. which can't be expressed in <acronym>PHP</acronym> into the value holder.
  418. </para>
  419. </sect3>
  420. <sect3 id="zend.codegenerator.reference.concrete.php-property">
  421. <title>Zend_CodeGenerator_Php_Property</title>
  422. <para>
  423. <classname>Zend_CodeGenerator_Php_Property</classname> describe
  424. una propiedad de clase, que puede ser tanto una constante o una
  425. variable. En cada caso, la propiedad puede tener un valor
  426. predeterminado asociado con ella. Además, la visibilidad de las
  427. propiedades de la variable puede ser establecida por la clase
  428. padre,
  429. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname>. </para>
  430. <para> La <acronym>API</acronym> de la clase es la siguiente: </para>
  431. <programlisting language="php"><![CDATA[
  432. class Zend_CodeGenerator_Php_Property
  433. extends Zend_CodeGenerator_Php_Member_Abstract
  434. {
  435. public static function fromReflection(
  436. Zend_Reflection_Property $reflectionProperty
  437. )
  438. public function setConst($const)
  439. public function isConst()
  440. public function setDefaultValue($defaultValue)
  441. public function getDefaultValue()
  442. public function generate()
  443. }
  444. ]]></programlisting>
  445. </sect3>
  446. </sect2>
  447. </sect1>