Zend_CodeGenerator-Reference.xml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.codegenerator.reference">
  5. <title>Zend_CodeGenerator Referenz</title>
  6. <sect2 id="zend.codegenerator.reference.abstracts">
  7. <title>Abstrakte Klassen und Interfaces</title>
  8. <sect3 id="zend.codegenerator.reference.abstracts.abstract">
  9. <title>Zend_CodeGenerator_Abstract</title>
  10. <para>
  11. Die Basisklasse von der alle CodeGenerator Klassen abgeleitet sind und die
  12. minimal notwendige Funktionalität anbietet. Dessen API ist wie folgt:
  13. </para>
  14. <programlisting role="php"><![CDATA[
  15. abstract class Zend_CodeGenerator_Abstract
  16. {
  17. final public function __construct(Array $options = array())
  18. public function setOptions(Array $options)
  19. public function setSourceContent($sourceContent)
  20. public function getSourceContent()
  21. protected function _init()
  22. protected function _prepare()
  23. abstract public function generate();
  24. final public function __toString()
  25. }
  26. ]]></programlisting>
  27. <para>
  28. Der Constructor ruft zuerst <code>_init()</code> auf (welches für eine konkrete
  29. erweiterte Klasse für die Implementation leer gelassen ist), übergibt dann
  30. den <code>$options</code> Parameter an <code>setOptions()</code> und ruft
  31. zuletzt <code>_prepare()</code> auf (welches auch von der erweiternden Klasse
  32. implementiert werden muß).
  33. </para>
  34. <para>
  35. Wie die meisten Klassen im Zend Framework, vergleicht <code>setOptions()</code>
  36. den Schlüssel einer Option mit den in der Klasse existierenden Settern, und
  37. übergibt den Wert an die gefundene Methode.
  38. </para>
  39. <para>
  40. <code>__toString()</code> ist als final markiert, und leitet auf
  41. <code>generate()</code> weiter.
  42. </para>
  43. <para>
  44. <code>setSourceContent()</code> und <code>getSourceContent()</code> sind dazu
  45. vergesehen entweder den Standardinhalt für den zu erzeugenden Code zu setzen,
  46. oder um gesetzte Inhalte zu ersetzen sobald alle Arbeiten der Erzeugung
  47. beendet wurden.
  48. </para>
  49. </sect3>
  50. <sect3 id="zend.codegenerator.reference.abstracts.php-abstract">
  51. <title>Zend_CodeGenerator_Php_Abstract</title>
  52. <para>
  53. <classname>Zend_CodeGenerator_Php_Abstract</classname> erweitert
  54. <classname>Zend_CodeGenerator_Abstract</classname>, und fügt einige Eigenschaften hinzu für
  55. das Verfolgen ob Inhalte geändert wurden sowie der Anzahl an Einrückungen die
  56. vorhanden sein sollten bevor Inhalte erzeugt werden. Die API ist wie folgt:
  57. </para>
  58. <programlisting role="php"><![CDATA[
  59. abstract class Zend_CodeGenerator_Php_Abstract
  60. extends Zend_CodeGenerator_Abstract
  61. {
  62. public function setSourceDirty($isSourceDirty = true)
  63. public function isSourceDirty()
  64. public function setIndentation($indentation)
  65. public function getIndentation()
  66. }
  67. ]]></programlisting>
  68. </sect3>
  69. <sect3 id="zend.codegenerator.reference.abstracts.php-member-abstract">
  70. <title>Zend_CodeGenerator_Php_Member_Abstract</title>
  71. <para>
  72. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> ist eine Basisklasse für die
  73. Erstellung von Klassen-Member -- Eigenschaften und Methoden -- und bietet
  74. Zugriffs- und Änderungsmethoden für die Ausführung der Sichtbarkeit; ob ein
  75. Member Abstrakt, Statisch, oder Final ist; und der Name des Members. Die API ist
  76. wie folgt:
  77. </para>
  78. <programlisting role="php"><![CDATA[
  79. abstract class Zend_CodeGenerator_Php_Member_Abstract
  80. extends Zend_CodeGenerator_Php_Abstract
  81. {
  82. public function setAbstract($isAbstract)
  83. public function isAbstract()
  84. public function setStatic($isStatic)
  85. public function isStatic()
  86. public function setVisibility($visibility)
  87. public function getVisibility()
  88. public function setName($name)
  89. public function getName()
  90. }
  91. ]]></programlisting>
  92. </sect3>
  93. </sect2>
  94. <sect2 id="zend.codegenerator.reference.concrete">
  95. <title>Konkrete CodeGenerator Klassen</title>
  96. <sect3 id="zend.codegenerator.reference.concrete.php-body">
  97. <title>Zend_CodeGenerator_Php_Body</title>
  98. <para>
  99. <classname>Zend_CodeGenerator_Php_Body</classname> ist dazu gedacht generellen prozeduralen
  100. Code in einer Datei einzufügen. Als solches kann man einfach den Inhalt für das
  101. Objekt setzen, und es wird den Inhalt zurückgeben wenn man <code>generate()</code>
  102. aufruft.
  103. </para>
  104. <para>
  105. Die API der Klasse ist wie folgt:
  106. </para>
  107. <programlisting role="php"><![CDATA[
  108. class Zend_CodeGenerator_Php_Body extends Zend_CodeGenerator_Php_Abstract
  109. {
  110. public function setContent($content)
  111. public function getContent()
  112. public function generate()
  113. }
  114. ]]></programlisting>
  115. </sect3>
  116. <sect3 id="zend.codegenerator.reference.concrete.php-class">
  117. <title>Zend_CodeGenerator_Php_Class</title>
  118. <para>
  119. <classname>Zend_CodeGenerator_Php_Class</classname> ist für die Erstellung von PHP Klassen
  120. gedacht. Die Basisfunktionalität ist nur die Erstellung der PHP Klasse selbst,
  121. sowie optional den betreffenden PHP DocBlock. Klassen können von anderen Klassen
  122. abgeleitet sein, oder diese Implementieren, und können als Abstrakt markiert sein.
  123. Bei Verwendung von anderen CodeGenerator Klassen kann man auch Klassenkonstanten,
  124. Eigenschaften und Methoden hinzufügen.
  125. </para>
  126. <para>
  127. Die API ist wie folgt:
  128. </para>
  129. <programlisting role="php"><![CDATA[
  130. class Zend_CodeGenerator_Php_Class extends Zend_CodeGenerator_Php_Abstract
  131. {
  132. public static function fromReflection(
  133. Zend_Reflection_Class $reflectionClass
  134. )
  135. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  136. public function getDocblock()
  137. public function setName($name)
  138. public function getName()
  139. public function setAbstract($isAbstract)
  140. public function isAbstract()
  141. public function setExtendedClass($extendedClass)
  142. public function getExtendedClass()
  143. public function setImplementedInterfaces(Array $implementedInterfaces)
  144. public function getImplementedInterfaces()
  145. public function setProperties(Array $properties)
  146. public function setProperty($property)
  147. public function getProperties()
  148. public function getProperty($propertyName)
  149. public function setMethods(Array $methods)
  150. public function setMethod($method)
  151. public function getMethods()
  152. public function getMethod($methodName)
  153. public function hasMethod($methodName)
  154. public function isSourceDirty()
  155. public function generate()
  156. }
  157. ]]></programlisting>
  158. <para>
  159. Die <code>setProperty()</code> Methode akzeptiert ein Array von Informationen,
  160. die verwendet werden können um eine Instanz von
  161. <classname>Zend_CodeGenerator_Php_Property</classname> zu erstellen -- oder einfach eine
  162. Instanz von <classname>Zend_CodeGenerator_Php_Property</classname> selbst. Genauso
  163. akzeptiert <code>setMethod()</code> entweder ein Array von Information für die
  164. Erstellung einer <classname>Zend_CodeGenerator_Php_Method</classname> Instanz oder eine
  165. konkrete Instanz dieser Klasse.
  166. </para>
  167. <para>
  168. Beachte das <code>setDocBlock()</code> eine Instanz von
  169. <classname>Zend_CodeGenerator_Php_DocBlock</classname> erwartet.
  170. </para>
  171. </sect3>
  172. <sect3 id="zend.codegenerator.reference.concrete.php-docblock">
  173. <title>Zend_CodeGenerator_Php_Docblock</title>
  174. <para>
  175. <classname>Zend_CodeGenerator_Php_Docblock</classname> kann verwendet werden um PHP DocBlocks
  176. zu erstellen, inklusive aller standardmäßigen DocBlock Features: Kurz- und
  177. Langbeschreibung sowie zusätzliche Tags.
  178. </para>
  179. <para>
  180. Zusätzliche Tags können durch Verwendung der <code>setTag()</code> und
  181. <code>setTags()</code> Methoden gesetzt werden; diese nehmen entweder ein Array an
  182. das das Tag beschreibt das an den <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname>
  183. Contructor übergeben wird, oder eine Instanz dieser Klasse selbst.
  184. </para>
  185. <para>
  186. Die API ist wie folgt:
  187. </para>
  188. <programlisting role="php"><![CDATA[
  189. class Zend_CodeGenerator_Php_Docblock extends Zend_CodeGenerator_Php_Abstract
  190. {
  191. public static function fromReflection(
  192. Zend_Reflection_Docblock $reflectionDocblock
  193. )
  194. public function setShortDescription($shortDescription)
  195. public function getShortDescription()
  196. public function setLongDescription($longDescription)
  197. public function getLongDescription()
  198. public function setTags(Array $tags)
  199. public function setTag($tag)
  200. public function getTags()
  201. public function generate()
  202. }
  203. ]]></programlisting>
  204. </sect3>
  205. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag">
  206. <title>Zend_CodeGenerator_Php_Docblock_Tag</title>
  207. <para>
  208. <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> ist für die Erstellung von
  209. eigenen Tags, zum Einfügen in PHP DocBlocks, gedacht. Von Tags wird erwartet
  210. das Sie einen Namen enthalten (Der Teil der unmittelbar dem '@' Symbol folgt)
  211. und eine Beschreibung (alles das dem Tag Namen folgt).
  212. </para>
  213. <para>
  214. Die API der Klasse ist wie folgt:
  215. </para>
  216. <programlisting role="php"><![CDATA[
  217. class Zend_CodeGenerator_Php_Docblock_Tag
  218. extends Zend_CodeGenerator_Php_Abstract
  219. {
  220. public static function fromReflection(
  221. Zend_Reflection_Docblock_Tag $reflectionTag
  222. )
  223. public function setName($name)
  224. public function getName()
  225. public function setDescription($description)
  226. public function getDescription()
  227. public function generate()
  228. }
  229. ]]></programlisting>
  230. </sect3>
  231. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-param">
  232. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Param</title>
  233. <para>
  234. <classname>Zend_CodeGenerator_Php_DocBlock_Tag_Param</classname> ist eine spezielle Version
  235. von <classname>Zend_CodeGenerator_Php_DocBlock_Tag</classname>, und repräsentiert einen
  236. Parameter einer Methode. Das TagName ist hierbei bekannt ("param"), aber durch die
  237. Form des Tags, werden zusätzliche Informationen benötigt um Ihn zu erzeugen: den
  238. Namen des Parameter und den Datentyp den dieser repräsentiert.
  239. </para>
  240. <para>
  241. Die API dieser Klasse ist wie folgt:
  242. </para>
  243. <programlisting role="php"><![CDATA[
  244. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  245. extends Zend_CodeGenerator_Php_Docblock_Tag
  246. {
  247. public static function fromReflection(
  248. Zend_Reflection_Docblock_Tag $reflectionTagParam
  249. )
  250. public function setDatatype($datatype)
  251. public function getDatatype()
  252. public function setParamName($paramName)
  253. public function getParamName()
  254. public function generate()
  255. }
  256. ]]></programlisting>
  257. </sect3>
  258. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-return">
  259. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Return</title>
  260. <para>
  261. Wie die Variante des Param DocBlock Tags ist
  262. <classname>Zend_CodeGenerator_Php_Docblock_Tab_Return</classname> eine Variante eines
  263. Tags für die Darstellung eines Rückgabewerts einer Methode. In diesem Fall ist
  264. der Name des Tags bekannt ("return"), aber es benötigt einen Rückgabetyp.
  265. </para>
  266. <para>
  267. Die API der Klasse ist wie folgt:
  268. </para>
  269. <programlisting role="php"><![CDATA[
  270. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  271. extends Zend_CodeGenerator_Php_Docblock_Tag
  272. {
  273. public static function fromReflection(
  274. Zend_Reflection_Docblock_Tag $reflectionTagReturn
  275. )
  276. public function setDatatype($datatype)
  277. public function getDatatype()
  278. public function generate()
  279. }
  280. ]]></programlisting>
  281. </sect3>
  282. <sect3 id="zend.codegenerator.reference.concrete.php-file">
  283. <title>Zend_CodeGenerator_Php_File</title>
  284. <para>
  285. <classname>Zend_CodeGenerator_Php_File</classname> wird verwendet um den kompletten Inhalt
  286. einer Datei zu erstellen die PHP Code enthalten wird. Die Datei kann Klassen oder
  287. eigenen PHP Code enthalten, und wenn gewünscht einen Datei-Level Docblock.
  288. </para>
  289. <para>
  290. Wenn der Datei Klassen hinzugefügt werden, muß man entweder ein Array von
  291. Informationen übergeben die an den Constructor von
  292. <classname>Zend_CodeGenerator_Php_Class</classname> übergeben werden, oder eine Instanz
  293. dieser Klasse. Genau wie bei den DocBlocks, muß man Informationen für den
  294. Constructor von <classname>Zend_CodeGenerator_Php_Docblock</classname> übergeben die
  295. verwendet werden, oder eine Instanz dieser Klasse.
  296. </para>
  297. <para>
  298. Die API der Klasse ist wie folgt:
  299. </para>
  300. <programlisting role="php"><![CDATA[
  301. class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
  302. {
  303. public static function fromReflectedFilePath(
  304. $filePath,
  305. $usePreviousCodeGeneratorIfItExists = true,
  306. $includeIfNotAlreadyIncluded = true)
  307. public static function fromReflection(Zend_Reflection_File $reflectionFile)
  308. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  309. public function getDocblock()
  310. public function setRequiredFiles($requiredFiles)
  311. public function getRequiredFiles()
  312. public function setClasses(Array $classes)
  313. public function getClass($name = null)
  314. public function setClass($class)
  315. public function setFilename($filename)
  316. public function getFilename()
  317. public function getClasses()
  318. public function setBody($body)
  319. public function getBody()
  320. public function isSourceDirty()
  321. public function generate()
  322. }
  323. ]]></programlisting>
  324. </sect3>
  325. <sect3 id="zend.codegenerator.reference.concrete.php-member-container">
  326. <title>Zend_CodeGenerator_Php_Member_Container</title>
  327. <para>
  328. <classname>Zend_CodeGenerator_Php_Member_Container</classname> wird intern von
  329. <classname>Zend_CodeGenerator_Php_Class</classname> verwendet um die Klassenmember zu
  330. erheben -- Eigenschaften sowie Methoden. Diese werden durch den Namen indiziert,
  331. indem die konkrete Instanz des Members als Wert verwendet wird.
  332. </para>
  333. <para>
  334. Die API der Klasse ist wie folgt:
  335. </para>
  336. <programlisting role="php"><![CDATA[
  337. class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
  338. {
  339. public function __construct($type = self::TYPE_PROPERTY)
  340. }
  341. ]]></programlisting>
  342. </sect3>
  343. <sect3 id="zend.codegenerator.reference.concrete.php-method">
  344. <title>Zend_CodeGenerator_Php_Method</title>
  345. <para>
  346. <classname>Zend_CodeGenerator_Php_Method</classname> beschreibt eine Klassenmethode, und kann
  347. sowohl Code als auch den DocBlock für diese Methode erstellen. Die Sichtbarkeit und
  348. der Status als Statisch, Abstrakt, oder Final kann, über die Eltern-Klasse,
  349. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname>, angegeben werden. Letztendlich
  350. können die Parameter und Rückgabewerte für die Methode spezifiziert werden.
  351. </para>
  352. <para>
  353. Parameter könnnen durch Verwendung von <code>setParameter()</code> oder
  354. <code>setParameters()</code> gesetzt werden. In jedem Fall, sollte der Parameter
  355. entweder ein Array von Informationen sein die an den Constructor von
  356. <classname>Zend_CodeGenerator_Php_Parameter</classname> übergeben werden, oder eine Instanz
  357. dieser Klasse.
  358. </para>
  359. <para>
  360. Die API der Klasse ist wie folgt:
  361. </para>
  362. <programlisting role="php"><![CDATA[
  363. class Zend_CodeGenerator_Php_Method
  364. extends Zend_CodeGenerator_Php_Member_Abstract
  365. {
  366. public static function fromReflection(
  367. Zend_Reflection_Method $reflectionMethod
  368. )
  369. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  370. public function getDocblock()
  371. public function setFinal($isFinal)
  372. public function setParameters(Array $parameters)
  373. public function setParameter($parameter)
  374. public function getParameters()
  375. public function setBody($body)
  376. public function getBody()
  377. public function generate()
  378. }
  379. ]]></programlisting>
  380. </sect3>
  381. <sect3 id="zend.codegenerator.reference.concrete.php-parameter">
  382. <title>Zend_CodeGenerator_Php_Parameter</title>
  383. <para>
  384. <classname>Zend_CodeGenerator_Php_Parameter</classname> kann verwendet werden um
  385. Methodenparameter zu spezifizieren. Jeder Parameter kann eine Position haben
  386. (wenn nicht spezifiziert wird die Reihenfolge in der diese spezifiziert werden
  387. verwendet), einen Standardwert, und einen Datentyp; ein Parametername wird
  388. benötigt.
  389. </para>
  390. <para>
  391. Die API der Klasse ist wie folgt:
  392. </para>
  393. <programlisting role="php"><![CDATA[
  394. class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
  395. {
  396. public static function fromReflection(
  397. Zend_Reflection_Parameter $reflectionParameter
  398. )
  399. public function setType($type)
  400. public function getType()
  401. public function setName($name)
  402. public function getName()
  403. public function setDefaultValue($defaultValue)
  404. public function getDefaultValue()
  405. public function setPosition($position)
  406. public function getPosition()
  407. public function generate()
  408. }
  409. ]]></programlisting>
  410. </sect3>
  411. <sect3 id="zend.codegenerator.reference.concrete.php-property">
  412. <title>Zend_CodeGenerator_Php_Property</title>
  413. <para>
  414. <classname>Zend_CodeGenerator_Php_Property</classname> beschreibt die Eigenschaft einer
  415. Klasse, welche entweder eine Konstante oder eine Variable sein kann. In jedem
  416. Fall, kann der Eigenschaft ein optionaler Standardwert assoziiert werden.
  417. Zusätzlich kann die Sichtbarkeit von variablen Eigenschaften über die Elternklasse
  418. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> gesetzt werden.
  419. </para>
  420. <para>
  421. Die API der Klasse ist wie folgt:
  422. </para>
  423. <programlisting role="php"><![CDATA[
  424. class Zend_CodeGenerator_Php_Property
  425. extends Zend_CodeGenerator_Php_Member_Abstract
  426. {
  427. public static function fromReflection(
  428. Zend_Reflection_Property $reflectionProperty
  429. )
  430. public function setConst($const)
  431. public function isConst()
  432. public function setDefaultValue($defaultValue)
  433. public function getDefaultValue()
  434. public function generate()
  435. }
  436. ]]></programlisting>
  437. </sect3>
  438. </sect2>
  439. </sect1>