2
0

Zend_Reflection-Reference.xml 17 KB

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