Zend_Reflection-Reference.xml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17133 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.reflection.reference">
  5. <title>Zend_Reflection Referenz</title>
  6. <para>
  7. Die verschiedenen Klassen in <classname>Zend_Reflection</classname> mimen die API von PHP's
  8. <ulink url="http://php.net/reflection">Reflection API</ulink> - mit einem wichtigen
  9. Unterschied. PHP's Reflection API unterstützt die Introspection in die Annotation Tags
  10. von DocBlocks nicht, und auch nicht in die Variablen-Typen von Parametern, oder die
  11. Rückgabe-Typen.
  12. </para>
  13. <para>
  14. <classname>Zend_Reflection</classname> analysiert die DocBlock Anotations von Methoden um
  15. die Variablen-Typen und Rückgabe-Typen von Parametern zu Erkennen. Speziell die Annotations
  16. von <code>@param</code> und <code>@return</code> werden verwendet. Trotzdem kann man auch
  17. auf andere Annotation Tags prüfen, sowie die Standardmäßigen "Kurz"- (short) und
  18. "Lang" (long) Beschreibungen.
  19. </para>
  20. <para>
  21. Jedes Reflection Objekt in <classname>Zend_Reflection</classname> überschreibt die
  22. <methodname>getDocblock()</methodname> Methode um eine Instanz von
  23. <classname>Zend_Reflection_Docblock</classname> zurückzugeben. Die Klasse bietet
  24. Introspektion in die DocBlocks und Annotation Tags.
  25. </para>
  26. <para>
  27. <classname>Zend_Reflection_File</classname> ist eine neue Reflection Klasse welche die
  28. Introspektion von PHP Dateien erlaubt. Mit Ihr kann man die Klassen, Funktionen und
  29. globalen PHP Code erhalten der in der Datei enthalten ist.
  30. </para>
  31. <para>
  32. Letztendlich erlauben die verschiedenen Methoden, die andere Reflection Objekte
  33. zurückgeben, einen zweiten Parameter: Den Namen der Reflection Klasse die für das
  34. zurückzugebende Reflection Objekt zu verwenden ist.
  35. </para>
  36. <sect2 id="zend.reflection.reference.docblock">
  37. <title>Zend_Reflection_Docblock</title>
  38. <para>
  39. <classname>Zend_Reflection_Docblock</classname> ist das Herz von
  40. <classname>Zend_Reflection_Docblock</classname> Bonus über PHP's Reflection API. Es
  41. bietet die folgenden Methoden:
  42. </para>
  43. <itemizedlist>
  44. <listitem><para>
  45. <methodname>getContents()</methodname>: Gibt den kompletten Inhalt des DocBlocks
  46. zurück.
  47. </para></listitem>
  48. <listitem><para>
  49. <methodname>getStartLine()</methodname>: Gibt die Startposition des DocBlocks in der
  50. definierten Datei zurück.
  51. </para></listitem>
  52. <listitem><para>
  53. <methodname>getEndLine()</methodname>: Gibt die letzte Zeile des DocBlocks in der
  54. definierten Datei zurück.
  55. </para></listitem>
  56. <listitem><para>
  57. <methodname>getShortDescription()</methodname>: Gibt die kurze, ein-zeilige
  58. Beschreibung zurück (normalerweise die erste Zeile des DocBlocks).
  59. </para></listitem>
  60. <listitem><para>
  61. <methodname>getLongDescription()</methodname>: Gibt die lange Beschreibung des
  62. DocBlocks zurück.
  63. </para></listitem>
  64. <listitem><para>
  65. <methodname>hasTag($name)</methodname>: Erkennt ob der DocBlock das angegebene
  66. Annotation Tag besitzt.
  67. </para></listitem>
  68. <listitem><para>
  69. <methodname>getTag($name)</methodname>: Empfängt das Reflection Objekt des
  70. angegebenen Annotation Tags, oder ein boolsches <constant>FALSE</constant> wenn es
  71. nicht vorhanden ist.
  72. </para></listitem>
  73. <listitem><para>
  74. <methodname>getTags($filter)</methodname>: Gibt alle Tags zurück, oder alle Tags die
  75. dem angegebenen <code>$filter</code> String entsprechen. Die zurückgegebenen Tags
  76. werden ein Array von <code>Zend_Reflection_Docblock_Tag</code> Objekten sein.
  77. </para></listitem>
  78. </itemizedlist>
  79. </sect2>
  80. <sect2 id="zend.reflection.reference.docblock-tag">
  81. <title>Zend_Reflection_Docblock_Tag</title>
  82. <para>
  83. <classname>Zend_Reflection_Docblock_Tag</classname> bietet Reflection für individuelle
  84. Annotation Tags. Die meisten Tags bestehen nur aus einem Namen und einer Beschreibung.
  85. Im Fall einiger spezieller Tags, bietet die Klasse eine Factory Methode um eine
  86. Instanz der entsprechenden Klasse zu erhalten.
  87. </para>
  88. <para>
  89. Die folgenden Methoden sind für <classname>Zend_Reflection_Docblock_Tag</classname>
  90. definiert:
  91. </para>
  92. <itemizedlist>
  93. <listitem><para>
  94. <methodname>factory($tagDocblockLine)</methodname>: Instanziert die entsprechende
  95. Reflection Klasse des Tags und gibt diese zurück.
  96. </para></listitem>
  97. <listitem><para>
  98. <methodname>getName()</methodname>: Gibt den Namen des Annotation Tags zurück.
  99. </para></listitem>
  100. <listitem><para>
  101. <methodname>getDescription()</methodname>: Gibt die Beschreibung des Annotation Tags
  102. zurück.
  103. </para></listitem>
  104. </itemizedlist>
  105. </sect2>
  106. <sect2 id="zend.reflection.reference.docblock-tag-param">
  107. <title>Zend_Reflection_Docblock_Tag_Param</title>
  108. <para>
  109. <classname>Zend_Reflection_Docblock_Tag_Param</classname> ist eine spezialisierte
  110. Version von <classname>Zend_Reflection_Docblock_Tag</classname>. Die Beschreibung des
  111. <code>@param</code> Annotation Tags besteht aus dem Typ des Parameters, dem Namen der
  112. Variable und der Beschreibung der Variable. Sie fügt die folgenden Methoden zu
  113. <classname>Zend_Reflection_Docblock_Tag</classname> hinzu:
  114. </para>
  115. <itemizedlist>
  116. <listitem><para>
  117. <methodname>getType()</methodname>: Gibt den Variablentyp des Parameters zurück.
  118. </para></listitem>
  119. <listitem><para>
  120. <methodname>getVariableName()</methodname>: Gibt den Variablennamen des Parameters
  121. zurück.
  122. </para></listitem>
  123. </itemizedlist>
  124. </sect2>
  125. <sect2 id="zend.reflection.reference.docblock-tag-return">
  126. <title>Zend_Reflection_Docblock_Tag_Return</title>
  127. <para>
  128. Wie <classname>Zend_Reflection_Docblock_Tag_Param</classname> ist
  129. <classname>Zend_Reflection_Docblock_Tag_Return</classname> eine spezialisierte Version
  130. von <classname>Zend_Reflection_Docblock_Tag</classname>. Die Beschreibung des
  131. <code>@return</code> Annotation Tags besteht aus dem Rückgabetyp und der Beschreibung
  132. der Variable. Sie fügt die folgende Methode zu
  133. <code>Zend_Reflection_Docblock_Tag</code> hinzu:
  134. </para>
  135. <itemizedlist>
  136. <listitem><para>
  137. <methodname>getType()</methodname>: gibt den Rückgabetyp zurück.
  138. </para></listitem>
  139. </itemizedlist>
  140. </sect2>
  141. <sect2 id="zend.reflection.reference.file">
  142. <title>Zend_Reflection_File</title>
  143. <para>
  144. <classname>Zend_Reflection_File</classname> bietet Introspection in PHP Dateien. Mit
  145. Ihr kann man Klassen, Funktionen und reinen PHP Code der in einer Datei definiert ist,
  146. betrachten. Sie definiert die folgenden Methoden:
  147. </para>
  148. <itemizedlist>
  149. <listitem><para>
  150. <methodname>getFileName()</methodname>: empfängt den Dateinamen der Datei die
  151. reflektiert wird.
  152. </para></listitem>
  153. <listitem><para>
  154. <methodname>getStartLine()</methodname>: empfängt den Startwert der Datei (Immer
  155. "1").
  156. </para></listitem>
  157. <listitem><para>
  158. <methodname>getEndLine()</methodname>: empfängt die letzte Teile / Anzahl der Linien
  159. in der Datei.
  160. </para></listitem>
  161. <listitem><para>
  162. <methodname>getDocComment($reflectionClass =
  163. 'Zend_Reflection_Docblock')</methodname>: empfängt das Reflection Objekt des
  164. Datei-Level DocBlocks.
  165. </para></listitem>
  166. <listitem><para>
  167. <methodname>getClasses($reflectionClass = 'Zend_Reflection_Class')</methodname>:
  168. empfängt ein Array von Reflection Objekten, eines für jede Klasse die in der
  169. Datei definiert ist.
  170. </para></listitem>
  171. <listitem><para>
  172. <methodname>getFunctions($reflectionClass =
  173. 'Zend_Reflection_Function')</methodname>: empfängt ein Array von Reflection
  174. Objekten, eines für jede Funktion die in der Datei definiert ist.
  175. </para></listitem>
  176. <listitem><para>
  177. <methodname>getClass($name = null, $reflectionClass =
  178. 'Zend_Reflection_Class')</methodname>: empfängt das Reflection Objekt für eine
  179. einzelne Klasse.
  180. </para></listitem>
  181. <listitem><para>
  182. <methodname>getContents()</methodname>: empfängt den kompletten Inhalt der Datei.
  183. </para></listitem>
  184. </itemizedlist>
  185. </sect2>
  186. <sect2 id="zend.reflection.reference.class">
  187. <title>Zend_Reflection_Class</title>
  188. <para>
  189. <classname>Zend_Reflection_Class</classname> erweitert <code>ReflectionClass</code> und
  190. folgt dessen API. Sie fügt eine zusätzliche,
  191. <methodname>getDeclaringFile()</methodname>, Methode hinzu, welche verwendet werden kann
  192. um das <classname>Zend_Reflection_File</classname> Reflection Objekt für die definierte
  193. Datei zu erhalten.
  194. </para>
  195. <para>
  196. Zusätzlich fügen die folgenden Methoden ein zusätzliches Argument für die Spezifikation
  197. der Reflection Klasse hinzu, die zu verwenden ist wenn ein Reflection Objekt geholt
  198. wird.
  199. </para>
  200. <itemizedlist>
  201. <listitem><para>
  202. <methodname>getDeclaringFile($reflectionClass = 'Zend_Reflection_File')</methodname>
  203. </para></listitem>
  204. <listitem><para>
  205. <methodname>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</methodname>
  206. </para></listitem>
  207. <listitem><para>
  208. <methodname>getInterfaces($reflectionClass = 'Zend_Reflection_Class')</methodname>
  209. </para></listitem>
  210. <listitem><para>
  211. <methodname>getMethod($reflectionClass = 'Zend_Reflection_Method')</methodname>
  212. </para></listitem>
  213. <listitem><para>
  214. <methodname>getMethods($filter = -1, $reflectionClass =
  215. 'Zend_Reflection_Method')</methodname>
  216. </para></listitem>
  217. <listitem><para>
  218. <methodname>getParentClass($reflectionClass = 'Zend_Reflection_Class')</methodname>
  219. </para></listitem>
  220. <listitem><para>
  221. <code>getProperty($name, $reflectionClass =
  222. 'Zend_Reflection_Property')</code>
  223. </para></listitem>
  224. <listitem><para>
  225. <code>getProperties($filter = -1, $reflectionClass =
  226. 'Zend_Reflection_Property')</code>
  227. </para></listitem>
  228. </itemizedlist>
  229. </sect2>
  230. <sect2 id="zend.reflection.reference.extension">
  231. <title>Zend_Reflection_Extension</title>
  232. <para>
  233. <classname>Zend_Reflection_Extension</classname> erweitert
  234. <code>ReflectionExtension</code> und folgt dessen API. Sie überschreibt die folgenden
  235. Methoden und fügt ein zusätzliches Argument hinzu, für die Spezifikation der Reflection
  236. Klasse, die zu verwenden ist wenn ein Reflection Objekt geholt wird:
  237. </para>
  238. <itemizedlist>
  239. <listitem><para>
  240. <methodname>getFunctions($reflectionClass =
  241. 'Zend_Reflection_Function')</methodname>: empfängt ein Array von Reflection
  242. Objekten welche die Funktionen repräsentieren die von der Erweiterung definiert
  243. werden.
  244. </para></listitem>
  245. <listitem><para>
  246. <methodname>getClasses($reflectionClass = 'Zend_Reflection_Class')</methodname>:
  247. empfängt ein Array von Reflection Objekten welche die Klassen repräsentieren die von
  248. der Erweiterung definiert werden.
  249. </para></listitem>
  250. </itemizedlist>
  251. </sect2>
  252. <sect2 id="zend.reflection.reference.function">
  253. <title>Zend_Reflection_Function</title>
  254. <para>
  255. <classname>Zend_Reflection_Function</classname> fügt eine Methode für das Empfangen des
  256. Rückgabewerts der Funktion hinzu, und überschreibt diverse Methoden um die
  257. Spezifikation der Reflection Klasse zu erlauben, die für zurückgegebene Reflection
  258. Objekte zu verwenden ist.
  259. </para>
  260. <itemizedlist>
  261. <listitem><para>
  262. <methodname>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</methodname>:
  263. empfängt das Reflection Objekt des Funktions DocBlocks.
  264. </para></listitem>
  265. <listitem><para>
  266. <methodname>getParameters($reflectionClass =
  267. 'Zend_Reflection_Parameter')</methodname>: empfängt ein Array aller Reflection
  268. Objekte für die Parameter der Funktionen.
  269. </para></listitem>
  270. <listitem><para>
  271. <methodname>getReturn()</methodname>: empfängt das Reflection Objekt des
  272. Rückgabewerts.
  273. </para></listitem>
  274. </itemizedlist>
  275. </sect2>
  276. <sect2 id="zend.reflection.reference.method">
  277. <title>Zend_Reflection_Method</title>
  278. <para>
  279. <classname>Zend_Reflection_Method</classname> spiegelt
  280. <classname>Zend_Reflection_Function</classname> und überschreibt nur eine zusätzliche
  281. Methode:
  282. </para>
  283. <itemizedlist>
  284. <listitem><para>
  285. <methodname>getParentClass($reflectionClass = 'Zend_Reflection_Class')</methodname>:
  286. empfängt das Reflection Objekt der Eltern-Klasse.
  287. </para></listitem>
  288. </itemizedlist>
  289. </sect2>
  290. <sect2 id="zend.reflection.reference.parameter">
  291. <title>Zend_Reflection_Parameter</title>
  292. <para>
  293. <classname>Zend_Reflection_Parameter</classname> fügt eine Methode für das Empfangen
  294. des Parametertyps hinzu, und überschreibt Methoden um die Spezifikation der Reflection
  295. Klasse zu erlauben, die für zurückgegebene Reflection Objekte zu verwenden ist.
  296. </para>
  297. <itemizedlist>
  298. <listitem><para>
  299. <methodname>getDeclaringClass($reflectionClass =
  300. 'Zend_Reflection_Class')</methodname>: gibt die deklarierte Klasse des
  301. Parameters als Reflection Objekt zurück (wenn vorhanden).
  302. </para></listitem>
  303. <listitem><para>
  304. <methodname>getClass($reflectionClass = 'Zend_Reflection_Class')</methodname>: gibt
  305. die Klasse des Parameters als Reflection Objekt zurück (wenn vorhanden).
  306. </para></listitem>
  307. <listitem><para>
  308. <methodname>getDeclaringFunction($reflectionClass =
  309. 'Zend_Reflection_Function')</methodname>: gibt die Funktion des Parameters als
  310. Reflection Objekt zurück (wenn vorhanden).
  311. </para></listitem>
  312. <listitem><para>
  313. <methodname>getType()</methodname>: gibt den Typ des Parameters zurück.
  314. </para></listitem>
  315. </itemizedlist>
  316. </sect2>
  317. <sect2 id="zend.reflection.reference.property">
  318. <title>Zend_Reflection_Property</title>
  319. <para>
  320. <classname>Zend_Reflection_Property</classname> überschreibt eine einzelne Methode um
  321. die Spezifikation der zurückgegebenen Reflection Objekt Klasse zu spezifizieren:
  322. </para>
  323. <itemizedlist>
  324. <listitem><para>
  325. <methodname>getDeclaringClass($reflectionClass =
  326. 'Zend_Reflection_Class')</methodname>: empfängt die deklarierte Klasse der
  327. Eigenschaft als Reflection Objekt.
  328. </para></listitem>
  329. </itemizedlist>
  330. </sect2>
  331. </sect1>