Zend_Reflection-Reference.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <sect1 id="zend.reflection.reference">
  4. <title>Réference de Zend_Reflection</title>
  5. <para>
  6. Les classes de <code>Zend_Reflection</code> reprennent l'API de
  7. <ulink url="http://php.net/reflection">la Reflection PHP</ulink> - mais avec
  8. une différence importante : la Reflection PHP ne propose pas de manière d'introspecter
  9. les tags de documentation PHPDoc, ni les types des variables paramètres ou encore
  10. les types de retour des fonctions.
  11. </para>
  12. <para>
  13. <code>Zend_Reflection</code> analyse les commentaires PHPDoc pour déterminer les types
  14. des variables passées en paramètres ou de retour. Plus spécialement, les annotations
  15. <code>@param</code> et <code>@return</code> sont utilisées, même s'il reste possible
  16. d'analyser les autres blocs de commentaire, ainsi que leurs descriptions respectives.
  17. </para>
  18. <para>
  19. Chaque objet de réflexion dans <code>Zend_Reflection</code>, surcharge la méthode
  20. <code>getDocblock()</code> pour retourner une instance de
  21. <code>Zend_Reflection_Docblock</code>. Cette classe propose alors l'introspection
  22. des blocs de commentaires et notamment des tags PHPDoc.
  23. </para>
  24. <para>
  25. <code>Zend_Reflection_File</code> est une nouvelle classe qui permet d'introspecter les fichiers PHP
  26. à la recherche de classes, fonctions ou encore code global PHP contenu à l'intérieur.
  27. </para>
  28. <para>
  29. Enfin, la plupart des méthodes qui retournent des objets réflexion acceptent un second paramètre
  30. permettant de spécifier la classe qui sera instanciée pour créer de tels objets.
  31. </para>
  32. <sect2 id="zend.reflection.reference.docblock">
  33. <title>Zend_Reflection_Docblock</title>
  34. <para>
  35. <code>Zend_Reflection_Docblock</code> est le coeur de la valeur ajoutée par
  36. <code>Zend_Reflection</code> par rapport à la Reflection PHP.
  37. Voici les méthodes proposées:
  38. </para>
  39. <itemizedlist>
  40. <listitem><para>
  41. <code>getContents()</code>: retourne tout le contenu du bloc.
  42. </para></listitem>
  43. <listitem><para>
  44. <code>getStartLine()</code>: retourne la position de départ du bloc dans
  45. le fichier.
  46. </para></listitem>
  47. <listitem><para>
  48. <code>getEndLine()</code>: retourne la position de fin du bloc dans
  49. le fichier.
  50. </para></listitem>
  51. <listitem><para>
  52. <code>getShortDescription()</code>: récupère la description courte
  53. (en général la première ligne de commentaire).
  54. </para></listitem>
  55. <listitem><para>
  56. <code>getLongDescription()</code>: récupère la description longue
  57. du bloc.
  58. </para></listitem>
  59. <listitem><para>
  60. <code>hasTag($name)</code>: détermine si le bloc possède un tag particulier.
  61. </para></listitem>
  62. <listitem><para>
  63. <code>getTag($name)</code>: Récupère un tag particulier ou <code>false</code>
  64. si celui-ci est absent.
  65. </para></listitem>
  66. <listitem><para>
  67. <code>getTags($filter)</code>: Récupère tous les tags qui correspondent au filtre
  68. <code>$filter</code>. Le type de retour est un tableau d'objets
  69. <code>Zend_Reflection_Docblock_Tag</code>.
  70. </para></listitem>
  71. </itemizedlist>
  72. </sect2>
  73. <sect2 id="zend.reflection.reference.docblock-tag">
  74. <title>Zend_Reflection_Docblock_Tag</title>
  75. <para>
  76. <code>Zend_Reflection_Docblock_Tag</code> propose la réflexion pour un tag individuel.
  77. La plupart des tags se composent d'un nom et d'un description. Dans le cas de certains
  78. tags spéciaux, la classe propose une méthode de fabrique qui retourne la bonne instance.
  79. </para>
  80. <para>
  81. Voici les méthodes de <code>Zend_Reflection_Docblock_Tag</code>:
  82. </para>
  83. <itemizedlist>
  84. <listitem><para>
  85. <code>factory($tagDocblockLine)</code>: instancie la bonne classe de reflection
  86. pour le tag correspondant et en retourne l'objet.
  87. </para></listitem>
  88. <listitem><para>
  89. <code>getName()</code>: retourne le nom du tag.
  90. </para></listitem>
  91. <listitem><para>
  92. <code>getDescription()</code>: retourne la description du tag.
  93. </para></listitem>
  94. </itemizedlist>
  95. </sect2>
  96. <sect2 id="zend.reflection.reference.docblock-tag-param">
  97. <title>Zend_Reflection_Docblock_Tag_Param</title>
  98. <para>
  99. <code>Zend_Reflection_Docblock_Tag_Param</code> est une version spéciale de
  100. <code>Zend_Reflection_Docblock_Tag</code>. La description du tag
  101. <code>@param</code> consiste en un type, un nom de variable et une description.
  102. Elle ajoute les méthodes suivantes à <code>Zend_Reflection_Docblock_Tag</code>:
  103. </para>
  104. <itemizedlist>
  105. <listitem><para>
  106. <code>getType()</code>: Retourne le type de la variable considérée par le tag.
  107. </para></listitem>
  108. <listitem><para>
  109. <code>getVariableName()</code>: Retourne le nom de la variable considérée par le tag.
  110. </para></listitem>
  111. </itemizedlist>
  112. </sect2>
  113. <sect2 id="zend.reflection.reference.docblock-tag-return">
  114. <title>Zend_Reflection_Docblock_Tag_Return</title>
  115. <para>
  116. Comme <code>Zend_Reflection_Docblock_Tag_Param</code>,
  117. <code>Zend_Reflection_Docblock_Tag_Return</code> est une version spéciale de
  118. <code>Zend_Reflection_Docblock_Tag</code>. Le tag
  119. <code>@return</code> consiste en un type de retour et une description.
  120. Elle ajoute les méthodes suivantes à <code>Zend_Reflection_Docblock_Tag</code>:
  121. </para>
  122. <itemizedlist>
  123. <listitem><para>
  124. <code>getType()</code>: retourne le type de retour.
  125. </para></listitem>
  126. </itemizedlist>
  127. </sect2>
  128. <sect2 id="zend.reflection.reference.file">
  129. <title>Zend_Reflection_File</title>
  130. <para>
  131. <code>Zend_Reflection_File</code> propose l'introspection de fichiers PHP.
  132. Grâce à cela, vous pouvez déterminer les classes, fonctions ou le code pur PHP contenus
  133. dans un fichier PHP donné. Voici les méthodes proposées:
  134. </para>
  135. <itemizedlist>
  136. <listitem><para>
  137. <code>getFileName()</code>: Retourne le nom du fichier en cours de réflexion.
  138. </para></listitem>
  139. <listitem><para>
  140. <code>getStartLine()</code>: Retourne la ligne de démarrage du fichier (toujours "1").
  141. </para></listitem>
  142. <listitem><para>
  143. <code>getEndLine()</code> Retourne la dernière ligne du fichier, donc le nombre de lignes.
  144. </para></listitem>
  145. <listitem><para>
  146. <code>getDocComment($reflectionClass =
  147. 'Zend_Reflection_Docblock')</code>: Retourne un objet de réflection de commentaire
  148. PHPDoc du fichier en cours d'analyse.
  149. </para></listitem>
  150. <listitem><para>
  151. <code>getClasses($reflectionClass =
  152. 'Zend_Reflection_Class')</code>: Retourne un tableau d'objets de réflexion de classe,
  153. pour les classes contenues dans le fichier en cours d'analyse.
  154. </para></listitem>
  155. <listitem><para>
  156. <code>getFunctions($reflectionClass =
  157. 'Zend_Reflection_Function')</code>: Retourne un tableau d'objets de réflexion de fonction,
  158. pour les fonctions contenues dans le fichier en cours d'analyse.
  159. </para></listitem>
  160. <listitem><para>
  161. <code>getClass($name = null, $reflectionClass =
  162. 'Zend_Reflection_Class')</code>: Retourne l'objet de réflexion pour la classe contenue dans
  163. le fichier en cours d'analyse.
  164. </para></listitem>
  165. <listitem><para>
  166. <code>getContents()</code>: Retourne tout le contenu du fichier en cours d'analyse.
  167. </para></listitem>
  168. </itemizedlist>
  169. </sect2>
  170. <sect2 id="zend.reflection.reference.class">
  171. <title>Zend_Reflection_Class</title>
  172. <para>
  173. <code>Zend_Reflection_Class</code> étend
  174. <code>ReflectionClass</code>, et propose son API. Elle ajoute juste une méthode,
  175. <code>getDeclaringFile()</code>, qui peut être utilisée pour créer un objet
  176. <code>Zend_Reflection_File</code>.
  177. </para>
  178. <para>
  179. Aussi, les méthodes suivantes proposent un argument supplémentaire pour spécifier sa propre
  180. classe de réflexion:
  181. </para>
  182. <itemizedlist>
  183. <listitem><para>
  184. <code>getDeclaringFile($reflectionClass = 'Zend_Reflection_File')</code>
  185. </para></listitem>
  186. <listitem><para>
  187. <code>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</code>
  188. </para></listitem>
  189. <listitem><para>
  190. <code>getInterfaces($reflectionClass = 'Zend_Reflection_Class')</code>
  191. </para></listitem>
  192. <listitem><para>
  193. <code>getMethod($reflectionClass = 'Zend_Reflection_Method')</code>
  194. </para></listitem>
  195. <listitem><para>
  196. <code>getMethods($filter = -1, $reflectionClass = 'Zend_Reflection_Method')</code>
  197. </para></listitem>
  198. <listitem><para>
  199. <code>getParentClass($reflectionClass = 'Zend_Reflection_Class')</code>
  200. </para></listitem>
  201. <listitem><para>
  202. <code>getProperty($name, $reflectionClass =
  203. 'Zend_Reflection_Property')</code>
  204. </para></listitem>
  205. <listitem><para>
  206. <code>getProperties($filter = -1, $reflectionClass =
  207. 'Zend_Reflection_Property')</code>
  208. </para></listitem>
  209. </itemizedlist>
  210. </sect2>
  211. <sect2 id="zend.reflection.reference.extension">
  212. <title>Zend_Reflection_Extension</title>
  213. <para>
  214. <code>Zend_Reflection_Extension</code> étend
  215. <code>ReflectionExtension</code> et propose son API. Elle surcharge
  216. les méthodes suivantes afin d'ajouter un paramètre permettant de spécifier
  217. sa propre classe de réflexion:
  218. </para>
  219. <itemizedlist>
  220. <listitem><para>
  221. <code>getFunctions($reflectionClass =
  222. 'Zend_Reflection_Function')</code>: retourne un tableau d'objets réflexion
  223. représentants les fonctions définies par l'extension en question.
  224. </para></listitem>
  225. <listitem><para>
  226. <code>getClasses($reflectionClass =
  227. 'Zend_Reflection_Class')</code>: retourne un tableau d'objets réflexion
  228. représentants les classes définies par l'extension en question.
  229. </para></listitem>
  230. </itemizedlist>
  231. </sect2>
  232. <sect2 id="zend.reflection.reference.function">
  233. <title>Zend_Reflection_Function</title>
  234. <para>
  235. <code>Zend_Reflection_Function</code> ajoute une méthode pour retrouver le type de retour
  236. de la fonction introspéctée, et surcharge d'autres méthodes pour proposer de passer en paramètre
  237. une classe de réflexion à utiliser.
  238. </para>
  239. <itemizedlist>
  240. <listitem><para>
  241. <code>getDocblock($reflectionClass =
  242. 'Zend_Reflection_Docblock')</code>: Retourne un objet représentant les blocs de documentation.
  243. </para></listitem>
  244. <listitem><para>
  245. <code>getParameters($reflectionClass =
  246. 'Zend_Reflection_Parameter')</code>: Retourne un tableau représentant les paramètres
  247. de la fonction analysée sous forme d'objets réflexion.
  248. </para></listitem>
  249. <listitem><para>
  250. <code>getReturn()</code>: Retourne le type de retour sous forme d'objet réflexion
  251. </para></listitem>
  252. </itemizedlist>
  253. </sect2>
  254. <sect2 id="zend.reflection.reference.method">
  255. <title>Zend_Reflection_Method</title>
  256. <para>
  257. <code>Zend_Reflection_Method</code> reprend l'API de
  258. <code>Zend_Reflection_Function</code> et surcharge la méthode suivante:
  259. </para>
  260. <itemizedlist>
  261. <listitem><para>
  262. <code>getParentClass($reflectionClass =
  263. 'Zend_Reflection_Class')</code>: Retourne un objet réflexion de la classe parente
  264. </para></listitem>
  265. </itemizedlist>
  266. </sect2>
  267. <sect2 id="zend.reflection.reference.parameter">
  268. <title>Zend_Reflection_Parameter</title>
  269. <para>
  270. <code>Zend_Reflection_Parameter</code> ajoute une méthode pour retrouver le type
  271. d'un paramètre, et aussi surcharge certaines méthodes en rajoutant un paramètre
  272. permettant de spécifier sa propre classe de réflexion.
  273. </para>
  274. <itemizedlist>
  275. <listitem><para>
  276. <code>getDeclaringClass($reflectionClass =
  277. 'Zend_Reflection_Class')</code>: Retourne un objet réflexion représentant la classe
  278. de déclaration du paramètre (si disponible).
  279. </para></listitem>
  280. <listitem><para>
  281. <code>getClass($reflectionClass =
  282. 'Zend_Reflection_Class')</code>: Retourne un objet réflexion représentant la classe
  283. de l'objet passé comme paramètre (si disponible).
  284. </para></listitem>
  285. <listitem><para>
  286. <code>getDeclaringFunction($reflectionClass =
  287. 'Zend_Reflection_Function')</code>: Retourne un objet réflexion représentant la fonction
  288. passée comme paramètre (si disponible).
  289. </para></listitem>
  290. <listitem><para>
  291. <code>getType()</code>: Retourne le type du paramètre.
  292. </para></listitem>
  293. </itemizedlist>
  294. </sect2>
  295. <sect2 id="zend.reflection.reference.property">
  296. <title>Zend_Reflection_Property</title>
  297. <para>
  298. <code>Zend_Reflection_Property</code> surcharge une seule méthode afin de pouvoir spécifier
  299. le type de classe de retour:
  300. </para>
  301. <itemizedlist>
  302. <listitem><para>
  303. <code>getDeclaringClass($reflectionClass =
  304. 'Zend_Reflection_Class')</code>: Retourne un objet réflexion représentant la classe
  305. de l'objet passé comme paramètre (si disponible).
  306. </para></listitem>
  307. </itemizedlist>
  308. </sect2>
  309. </sect1>