Zend_CodeGenerator-Reference.xml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15825 -->
  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 language="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 <methodname>_init()</methodname> auf (welches für eine
  29. konkrete erweiterte Klasse für die Implementation leer gelassen ist), übergibt dann
  30. den <varname>$options</varname> Parameter an <methodname>setOptions()</methodname>
  31. und ruft zuletzt <methodname>_prepare()</methodname> auf (welches auch von der
  32. erweiternden Klasse implementiert werden muß).
  33. </para>
  34. <para>
  35. Wie die meisten Klassen im Zend Framework, vergleicht
  36. <methodname>setOptions()</methodname> den Schlüssel einer Option mit den in der
  37. Klasse existierenden Settern, und übergibt den Wert an die gefundene Methode.
  38. </para>
  39. <para>
  40. <methodname>__toString()</methodname> ist als final markiert, und leitet auf
  41. <methodname>generate()</methodname> weiter.
  42. </para>
  43. <para>
  44. <methodname>setSourceContent()</methodname> und
  45. <methodname>getSourceContent()</methodname> sind dazu vergesehen entweder den
  46. Standardinhalt für den zu erzeugenden Code zu setzen, oder um gesetzte Inhalte zu
  47. ersetzen sobald alle Arbeiten der Erzeugung 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
  55. hinzu für das Verfolgen ob Inhalte geändert wurden sowie der Anzahl an Einrückungen
  56. die vorhanden sein sollten bevor Inhalte erzeugt werden. Die API ist wie folgt:
  57. </para>
  58. <programlisting language="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
  73. für die 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 language="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
  100. prozeduralen Code in einer Datei einzufügen. Als solches kann man einfach den Inhalt
  101. für das Objekt setzen, und es wird den Inhalt zurückgeben wenn man
  102. <methodname>generate()</methodname> aufruft.
  103. </para>
  104. <para>
  105. Die API der Klasse ist wie folgt:
  106. </para>
  107. <programlisting language="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
  120. Klassen gedacht. Die Basisfunktionalität ist nur die Erstellung der PHP Klasse
  121. selbst, sowie optional den betreffenden PHP DocBlock. Klassen können von anderen
  122. Klassen abgeleitet sein, oder diese Implementieren, und können als Abstrakt markiert
  123. sein. Bei Verwendung von anderen CodeGenerator Klassen kann man auch
  124. Klassenkonstanten, Eigenschaften und Methoden hinzufügen.
  125. </para>
  126. <para>
  127. Die API ist wie folgt:
  128. </para>
  129. <programlisting language="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 <methodname>setProperty()</methodname> Methode akzeptiert ein Array von
  160. Informationen, die verwendet werden können um eine Instanz von
  161. <classname>Zend_CodeGenerator_Php_Property</classname> zu erstellen -- oder einfach
  162. eine Instanz von <classname>Zend_CodeGenerator_Php_Property</classname> selbst.
  163. Genauso akzeptiert <methodname>setMethod()</methodname> entweder ein Array von
  164. Information für die Erstellung einer
  165. <classname>Zend_CodeGenerator_Php_Method</classname> Instanz oder eine konkrete
  166. Instanz dieser Klasse.
  167. </para>
  168. <para>
  169. Beachte das <methodname>setDocBlock()</methodname> eine Instanz von
  170. <classname>Zend_CodeGenerator_Php_DocBlock</classname> erwartet.
  171. </para>
  172. </sect3>
  173. <sect3 id="zend.codegenerator.reference.concrete.php-docblock">
  174. <title>Zend_CodeGenerator_Php_Docblock</title>
  175. <para>
  176. <classname>Zend_CodeGenerator_Php_Docblock</classname> kann verwendet werden um PHP
  177. DocBlocks zu erstellen, inklusive aller standardmäßigen DocBlock Features: Kurz- und
  178. Langbeschreibung sowie zusätzliche Tags.
  179. </para>
  180. <para>
  181. Zusätzliche Tags können durch Verwendung der <methodname>setTag()</methodname> und
  182. <methodname>setTags()</methodname> Methoden gesetzt werden; diese nehmen entweder
  183. ein Array an das das Tag beschreibt das an den
  184. <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> Contructor übergeben
  185. wird, oder eine Instanz dieser Klasse selbst.
  186. </para>
  187. <para>
  188. Die API ist wie folgt:
  189. </para>
  190. <programlisting language="php"><![CDATA[
  191. class Zend_CodeGenerator_Php_Docblock extends Zend_CodeGenerator_Php_Abstract
  192. {
  193. public static function fromReflection(
  194. Zend_Reflection_Docblock $reflectionDocblock
  195. )
  196. public function setShortDescription($shortDescription)
  197. public function getShortDescription()
  198. public function setLongDescription($longDescription)
  199. public function getLongDescription()
  200. public function setTags(Array $tags)
  201. public function setTag($tag)
  202. public function getTags()
  203. public function generate()
  204. }
  205. ]]></programlisting>
  206. </sect3>
  207. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag">
  208. <title>Zend_CodeGenerator_Php_Docblock_Tag</title>
  209. <para>
  210. <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> ist für die Erstellung
  211. von eigenen Tags, zum Einfügen in PHP DocBlocks, gedacht. Von Tags wird erwartet
  212. das Sie einen Namen enthalten (Der Teil der unmittelbar dem '@' Symbol folgt)
  213. und eine Beschreibung (alles das dem Tag Namen folgt).
  214. </para>
  215. <para>
  216. Die API der Klasse ist wie folgt:
  217. </para>
  218. <programlisting language="php"><![CDATA[
  219. class Zend_CodeGenerator_Php_Docblock_Tag
  220. extends Zend_CodeGenerator_Php_Abstract
  221. {
  222. public static function fromReflection(
  223. Zend_Reflection_Docblock_Tag $reflectionTag
  224. )
  225. public function setName($name)
  226. public function getName()
  227. public function setDescription($description)
  228. public function getDescription()
  229. public function generate()
  230. }
  231. ]]></programlisting>
  232. </sect3>
  233. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-param">
  234. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Param</title>
  235. <para>
  236. <classname>Zend_CodeGenerator_Php_DocBlock_Tag_Param</classname> ist eine spezielle
  237. Version von <classname>Zend_CodeGenerator_Php_DocBlock_Tag</classname>, und
  238. repräsentiert einen Parameter einer Methode. Das TagName ist hierbei bekannt
  239. ("param"), aber durch die Form des Tags, werden zusätzliche Informationen benötigt
  240. um Ihn zu erzeugen: den Namen des Parameter und den Datentyp den dieser
  241. repräsentiert.
  242. </para>
  243. <para>
  244. Die API dieser Klasse ist wie folgt:
  245. </para>
  246. <programlisting language="php"><![CDATA[
  247. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  248. extends Zend_CodeGenerator_Php_Docblock_Tag
  249. {
  250. public static function fromReflection(
  251. Zend_Reflection_Docblock_Tag $reflectionTagParam
  252. )
  253. public function setDatatype($datatype)
  254. public function getDatatype()
  255. public function setParamName($paramName)
  256. public function getParamName()
  257. public function generate()
  258. }
  259. ]]></programlisting>
  260. </sect3>
  261. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-return">
  262. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Return</title>
  263. <para>
  264. Wie die Variante des Param DocBlock Tags ist
  265. <classname>Zend_CodeGenerator_Php_Docblock_Tab_Return</classname> eine Variante
  266. eines Tags für die Darstellung eines Rückgabewerts einer Methode. In diesem Fall ist
  267. der Name des Tags bekannt ("return"), aber es benötigt einen Rückgabetyp.
  268. </para>
  269. <para>
  270. Die API der Klasse ist wie folgt:
  271. </para>
  272. <programlisting language="php"><![CDATA[
  273. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  274. extends Zend_CodeGenerator_Php_Docblock_Tag
  275. {
  276. public static function fromReflection(
  277. Zend_Reflection_Docblock_Tag $reflectionTagReturn
  278. )
  279. public function setDatatype($datatype)
  280. public function getDatatype()
  281. public function generate()
  282. }
  283. ]]></programlisting>
  284. </sect3>
  285. <sect3 id="zend.codegenerator.reference.concrete.php-file">
  286. <title>Zend_CodeGenerator_Php_File</title>
  287. <para>
  288. <classname>Zend_CodeGenerator_Php_File</classname> wird verwendet um den kompletten
  289. Inhalt einer Datei zu erstellen die PHP Code enthalten wird. Die Datei kann Klassen
  290. oder eigenen PHP Code enthalten, und wenn gewünscht einen Datei-Level Docblock.
  291. </para>
  292. <para>
  293. Wenn der Datei Klassen hinzugefügt werden, muß man entweder ein Array von
  294. Informationen übergeben die an den Constructor von
  295. <classname>Zend_CodeGenerator_Php_Class</classname> übergeben werden, oder eine
  296. Instanz dieser Klasse. Genau wie bei den DocBlocks, muß man Informationen für den
  297. Constructor von <classname>Zend_CodeGenerator_Php_Docblock</classname> übergeben die
  298. verwendet werden, oder eine Instanz dieser Klasse.
  299. </para>
  300. <para>
  301. Die API der Klasse ist wie folgt:
  302. </para>
  303. <programlisting language="php"><![CDATA[
  304. class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
  305. {
  306. public static function fromReflectedFilePath(
  307. $filePath,
  308. $usePreviousCodeGeneratorIfItExists = true,
  309. $includeIfNotAlreadyIncluded = true)
  310. public static function fromReflection(Zend_Reflection_File $reflectionFile)
  311. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  312. public function getDocblock()
  313. public function setRequiredFiles($requiredFiles)
  314. public function getRequiredFiles()
  315. public function setClasses(Array $classes)
  316. public function getClass($name = null)
  317. public function setClass($class)
  318. public function setFilename($filename)
  319. public function getFilename()
  320. public function getClasses()
  321. public function setBody($body)
  322. public function getBody()
  323. public function isSourceDirty()
  324. public function generate()
  325. }
  326. ]]></programlisting>
  327. </sect3>
  328. <sect3 id="zend.codegenerator.reference.concrete.php-member-container">
  329. <title>Zend_CodeGenerator_Php_Member_Container</title>
  330. <para>
  331. <classname>Zend_CodeGenerator_Php_Member_Container</classname> wird intern von
  332. <classname>Zend_CodeGenerator_Php_Class</classname> verwendet um die Klassenmember
  333. zu erheben -- Eigenschaften sowie Methoden. Diese werden durch den Namen indiziert,
  334. indem die konkrete Instanz des Members als Wert verwendet wird.
  335. </para>
  336. <para>
  337. Die API der Klasse ist wie folgt:
  338. </para>
  339. <programlisting language="php"><![CDATA[
  340. class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
  341. {
  342. public function __construct($type = self::TYPE_PROPERTY)
  343. }
  344. ]]></programlisting>
  345. </sect3>
  346. <sect3 id="zend.codegenerator.reference.concrete.php-method">
  347. <title>Zend_CodeGenerator_Php_Method</title>
  348. <para>
  349. <classname>Zend_CodeGenerator_Php_Method</classname> beschreibt eine Klassenmethode,
  350. und kann sowohl Code als auch den DocBlock für diese Methode erstellen. Die
  351. Sichtbarkeit und der Status als Statisch, Abstrakt, oder Final kann, über die
  352. Eltern-Klasse, <classname>Zend_CodeGenerator_Php_Member_Abstract</classname>,
  353. angegeben werden. Letztendlich können die Parameter und Rückgabewerte für die
  354. Methode spezifiziert werden.
  355. </para>
  356. <para>
  357. Parameter könnnen durch Verwendung von <methodname>setParameter()</methodname> oder
  358. <methodname>setParameters()</methodname> gesetzt werden. In jedem Fall, sollte der
  359. Parameter entweder ein Array von Informationen sein die an den Constructor von
  360. <classname>Zend_CodeGenerator_Php_Parameter</classname> übergeben werden, oder eine
  361. Instanz dieser Klasse.
  362. </para>
  363. <para>
  364. Die API der Klasse ist wie folgt:
  365. </para>
  366. <programlisting language="php"><![CDATA[
  367. class Zend_CodeGenerator_Php_Method
  368. extends Zend_CodeGenerator_Php_Member_Abstract
  369. {
  370. public static function fromReflection(
  371. Zend_Reflection_Method $reflectionMethod
  372. )
  373. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  374. public function getDocblock()
  375. public function setFinal($isFinal)
  376. public function setParameters(Array $parameters)
  377. public function setParameter($parameter)
  378. public function getParameters()
  379. public function setBody($body)
  380. public function getBody()
  381. public function generate()
  382. }
  383. ]]></programlisting>
  384. </sect3>
  385. <sect3 id="zend.codegenerator.reference.concrete.php-parameter">
  386. <title>Zend_CodeGenerator_Php_Parameter</title>
  387. <para>
  388. <classname>Zend_CodeGenerator_Php_Parameter</classname> kann verwendet werden um
  389. Methodenparameter zu spezifizieren. Jeder Parameter kann eine Position haben
  390. (wenn nicht spezifiziert wird die Reihenfolge in der diese spezifiziert werden
  391. verwendet), einen Standardwert, und einen Datentyp; ein Parametername wird
  392. benötigt.
  393. </para>
  394. <para>
  395. Die API der Klasse ist wie folgt:
  396. </para>
  397. <programlisting language="php"><![CDATA[
  398. class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
  399. {
  400. public static function fromReflection(
  401. Zend_Reflection_Parameter $reflectionParameter
  402. )
  403. public function setType($type)
  404. public function getType()
  405. public function setName($name)
  406. public function getName()
  407. public function setDefaultValue($defaultValue)
  408. public function getDefaultValue()
  409. public function setPosition($position)
  410. public function getPosition()
  411. public function generate()
  412. }
  413. ]]></programlisting>
  414. </sect3>
  415. <sect3 id="zend.codegenerator.reference.concrete.php-property">
  416. <title>Zend_CodeGenerator_Php_Property</title>
  417. <para>
  418. <classname>Zend_CodeGenerator_Php_Property</classname> beschreibt die Eigenschaft
  419. einer Klasse, welche entweder eine Konstante oder eine Variable sein kann. In jedem
  420. Fall, kann der Eigenschaft ein optionaler Standardwert assoziiert werden.
  421. Zusätzlich kann die Sichtbarkeit von variablen Eigenschaften über die Elternklasse
  422. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> gesetzt werden.
  423. </para>
  424. <para>
  425. Die API der Klasse ist wie folgt:
  426. </para>
  427. <programlisting language="php"><![CDATA[
  428. class Zend_CodeGenerator_Php_Property
  429. extends Zend_CodeGenerator_Php_Member_Abstract
  430. {
  431. public static function fromReflection(
  432. Zend_Reflection_Property $reflectionProperty
  433. )
  434. public function setConst($const)
  435. public function isConst()
  436. public function setDefaultValue($defaultValue)
  437. public function getDefaultValue()
  438. public function generate()
  439. }
  440. ]]></programlisting>
  441. </sect3>
  442. </sect2>
  443. </sect1>