Zend_Reflection-Reference.xml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 24249 -->
  4. <sect1 id="zend.reflection.reference">
  5. <title>Zend_Reflectionリファレンス</title>
  6. <para>
  7. <classname>Zend_Reflection</classname>の様々なクラスは、
  8. <acronym>PHP</acronym>の<ulink url="http://php.net/reflection">Reflection <acronym>API</acronym></ulink>の<acronym>API</acronym>に良く似ています。
  9. しかし、一つ重要な違いがあります。
  10. <acronym>PHP</acronym>のReflection <acronym>API</acronym>はdocblock注釈タグの内部、パラメータ変数の型も返す型も、
  11. 参照することができません。
  12. </para>
  13. <para>
  14. <classname>Zend_Reflection</classname>は、
  15. パラメーター変数の型や返す型を判断するために、
  16. メソッドのdocblock注釈を解析します。
  17. 特に<code>@param</code>及び<code>@return</code>注釈が使われます。
  18. しかしながら、"短い"説明や"長い"説明ばかりではなく、
  19. その他の注釈タグも検査できます。
  20. </para>
  21. <para>
  22. <classname>Zend_Reflection</classname>のそれぞれのReflectionオブジェクトは、
  23. <classname>Zend_Reflection_Docblock</classname>のインスタンスを返すように、
  24. <code>getDocblock()</code>を上書きします。
  25. このクラスはdocblock及び注釈タグを参照できるようにします。
  26. </para>
  27. <para>
  28. <classname>Zend_Reflection_File</classname>は<acronym>PHP</acronym>ファイルの内部を参照できる新しいReflectionクラスです。
  29. それを使って、<acronym>PHP</acronym>ファイルに含まれるクラスや関数、グローバルな<acronym>PHP</acronym>コードを取得できます。
  30. </para>
  31. <para>
  32. 最後に、その他のReflectionオブジェクトを返す様々なメソッドにおいて、
  33. 2番目の引数としてクラス名を、
  34. 返されたReflectionオブジェクトで使用できます。
  35. </para>
  36. <sect2 id="zend.reflection.reference.docblock">
  37. <title>Zend_Reflection_Docblock</title>
  38. <para>
  39. <classname>Zend_Reflection_Docblock</classname>は
  40. <acronym>PHP</acronym>のReflection <acronym>API</acronym>以上に<classname>Zend_Reflection</classname>に価値を付与する心臓部です。
  41. それには下記のメソッドがあります:
  42. </para>
  43. <itemizedlist>
  44. <listitem><para>
  45. <code>getContents()</code>: docblockの完全な内容を返します
  46. </para></listitem>
  47. <listitem><para>
  48. <code>getStartLine()</code>: 定義されたファイル内での
  49. docblock開始位置を返します
  50. </para></listitem>
  51. <listitem><para>
  52. <code>getEndLine()</code>: 定義されたファイル内での
  53. docblock終了行を返します
  54. </para></listitem>
  55. <listitem><para>
  56. <code>getShortDescription()</code>: 短い、一行の説明を取得します
  57. (たいていはdocblockの最初の行)
  58. </para></listitem>
  59. <listitem><para>
  60. <code>getLongDescription()</code>: docblockの長い説明を取得します
  61. </para></listitem>
  62. <listitem><para>
  63. <code>hasTag($name)</code>: 与えられた注釈タグが
  64. docblockにあるかどうか判断します
  65. </para></listitem>
  66. <listitem><para>
  67. <code>getTag($name)</code>: 与えられた注釈タグのReflectionオブジェクト、
  68. または存在しない場合<constant>FALSE</constant>を返します
  69. </para></listitem>
  70. <listitem><para>
  71. <code>getTags($filter)</code>: 全てのタグ、
  72. または与えられた<varname>$filter</varname>文字列に一致する全てのタグを取得します。
  73. タグは<classname>Zend_Reflection_Docblock_Tag</classname>オブジェクトの配列として返されます。
  74. </para></listitem>
  75. </itemizedlist>
  76. </sect2>
  77. <sect2 id="zend.reflection.reference.docblock-tag">
  78. <title>Zend_Reflection_Docblock_Tag</title>
  79. <para>
  80. <classname>Zend_Reflection_Docblock_Tag</classname>は個別の注釈タグのためのReflectionを提供します。
  81. ほとんどのタグは名前と説明から構成されています。
  82. いくつかの特別なタグの場合には、
  83. 適切なクラスのインスタンスを取得するための、
  84. ファクトリーメソッドをクラスで提供します。
  85. </para>
  86. <para>
  87. 下記のメソッドは<classname>Zend_Reflection_Docblock_Tag</classname>のために定義されています:
  88. </para>
  89. <itemizedlist>
  90. <listitem><para>
  91. <code>factory($tagDocblockLine)</code>: 注釈タグReflectionクラスをインスタンス化して返します。
  92. </para></listitem>
  93. <listitem><para>
  94. <code>getName()</code>: 注釈タグの名前を返します
  95. </para></listitem>
  96. <listitem><para>
  97. <code>getDescription()</code>: 注釈の説明を返します
  98. </para></listitem>
  99. </itemizedlist>
  100. </sect2>
  101. <sect2 id="zend.reflection.reference.docblock-tag-param">
  102. <title>Zend_Reflection_Docblock_Tag_Param</title>
  103. <para>
  104. <classname>Zend_Reflection_Docblock_Tag_Param</classname>は
  105. <classname>Zend_Reflection_Docblock_Tag</classname>の特化したバージョンです。
  106. <code>@param</code>注釈タグの説明はパラメータの型及び変数名、変数の説明から構成されています。
  107. このクラスにより下記のメソッドが<classname>Zend_Reflection_Docblock_Tag</classname>に追加されます:
  108. </para>
  109. <itemizedlist>
  110. <listitem><para>
  111. <code>getType()</code>: パラメータ変数の型を返します
  112. </para></listitem>
  113. <listitem><para>
  114. <code>getVariableName()</code>: パラメータ変数の名前を返します
  115. </para></listitem>
  116. </itemizedlist>
  117. </sect2>
  118. <sect2 id="zend.reflection.reference.docblock-tag-return">
  119. <title>Zend_Reflection_Docblock_Tag_Return</title>
  120. <para>
  121. <classname>Zend_Reflection_Docblock_Tag_Param</classname>のように、
  122. <classname>Zend_Reflection_Docblock_Tag_Return</classname>は
  123. <classname>Zend_Reflection_Docblock_Tag</classname>の特化したバージョンです。
  124. <code>@return</code>注釈タグの説明は返す型及び変数の説明から構成されています。
  125. このクラスにより下記のメソッドが<classname>Zend_Reflection_Docblock_Tag</classname>に追加されます:
  126. </para>
  127. <itemizedlist>
  128. <listitem><para>
  129. <code>getType()</code>: 戻す型を返します
  130. </para></listitem>
  131. </itemizedlist>
  132. </sect2>
  133. <sect2 id="zend.reflection.reference.file">
  134. <title>Zend_Reflection_File</title>
  135. <para>
  136. <classname>Zend_Reflection_File</classname>により<acronym>PHP</acronym>ファイル内部を参照できます。
  137. それを使って、ファイルで定義されたクラスや関数、生の<acronym>PHP</acronym>コードを参照できます。
  138. 下記の関数が定義されています:
  139. </para>
  140. <itemizedlist>
  141. <listitem><para>
  142. <code>getFileName()</code>: Reflectionを使用したファイルの名前を取得します
  143. </para></listitem>
  144. <listitem><para>
  145. <code>getStartLine()</code>: ファイルの開始行を返します(常に1)
  146. </para></listitem>
  147. <listitem><para>
  148. <code>getEndLine()</code> 最終行、ファイル中の行数を取得します
  149. </para></listitem>
  150. <listitem><para>
  151. <code>getDocComment($reflectionClass =
  152. 'Zend_Reflection_Docblock')</code>: ファイルレベルのdocblock Reflectionオブジェクトを取得します
  153. </para></listitem>
  154. <listitem><para>
  155. <code>getClasses($reflectionClass =
  156. 'Zend_Reflection_Class')</code>: Reflectionオブジェクトの配列を取得します。
  157. ファイルに定義されているそれぞれのクラスです。
  158. </para></listitem>
  159. <listitem><para>
  160. <code>getFunctions($reflectionClass =
  161. 'Zend_Reflection_Function')</code>: Reflectionオブジェクトの配列を取得します。
  162. ファイルに定義されているそれぞれの関数です。
  163. </para></listitem>
  164. <listitem><para>
  165. <code>getClass($name = null, $reflectionClass =
  166. 'Zend_Reflection_Class')</code>: 一つのクラスのReflectionオブジェクトの配列を取得します
  167. </para></listitem>
  168. <listitem><para>
  169. <code>getContents()</code>: ファイルの全てのコンテンツを取得します。
  170. </para></listitem>
  171. </itemizedlist>
  172. </sect2>
  173. <sect2 id="zend.reflection.reference.class">
  174. <title>Zend_Reflection_Class</title>
  175. <para>
  176. <classname>Zend_Reflection_Class</classname>は<classname>ReflectionClass</classname>を拡張して、
  177. その<acronym>API</acronym>に追随します。
  178. ひとつ追加のメソッド、<code>getDeclaringFile()</code>を追加します。
  179. それは定義されたファイルでの<classname>Zend_Reflection_File</classname> Reflectionオブジェクトを
  180. 取得するために使われるでしょう。
  181. </para>
  182. <para>
  183. さらに、下記のメソッドはReflectionオブジェクトを取り出すときに使う
  184. Reflectionクラスを指定する際に追加の変数を加えます。:
  185. </para>
  186. <itemizedlist>
  187. <listitem><para>
  188. <code>getDeclaringFile($reflectionClass = 'Zend_Reflection_File')</code>
  189. </para></listitem>
  190. <listitem><para>
  191. <code>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</code>
  192. </para></listitem>
  193. <listitem><para>
  194. <code>getInterfaces($reflectionClass = 'Zend_Reflection_Class')</code>
  195. </para></listitem>
  196. <listitem><para>
  197. <code>getMethod($reflectionClass = 'Zend_Reflection_Method')</code>
  198. </para></listitem>
  199. <listitem><para>
  200. <code>getMethods($filter = -1, $reflectionClass = 'Zend_Reflection_Method')</code>
  201. </para></listitem>
  202. <listitem><para>
  203. <code>getParentClass($reflectionClass = 'Zend_Reflection_Class')</code>
  204. </para></listitem>
  205. <listitem><para>
  206. <code>getProperty($name, $reflectionClass =
  207. 'Zend_Reflection_Property')</code>
  208. </para></listitem>
  209. <listitem><para>
  210. <code>getProperties($filter = -1, $reflectionClass =
  211. 'Zend_Reflection_Property')</code>
  212. </para></listitem>
  213. </itemizedlist>
  214. </sect2>
  215. <sect2 id="zend.reflection.reference.extension">
  216. <title>Zend_Reflection_Extension</title>
  217. <para>
  218. <classname>Zend_Reflection_Extension</classname>は<classname>ReflectionExtension</classname>を拡張して、
  219. その<acronym>API</acronym>に追随します。
  220. それはReflectionオブジェクトを取り出すときに使う
  221. Reflectionクラスを指定する際に追加の変数を加えて、
  222. 下記のメソッドを上書きします。
  223. </para>
  224. <itemizedlist>
  225. <listitem><para>
  226. <code>getFunctions($reflectionClass =
  227. 'Zend_Reflection_Function')</code>: エクステンションで定義された関数を
  228. 示す配列を取得します。
  229. </para></listitem>
  230. <listitem><para>
  231. <code>getClasses($reflectionClass =
  232. 'Zend_Reflection_Class')</code>: エクステンションで定義されたクラスを
  233. 示す配列を取得します。
  234. </para></listitem>
  235. </itemizedlist>
  236. </sect2>
  237. <sect2 id="zend.reflection.reference.function">
  238. <title>Zend_Reflection_Function</title>
  239. <para>
  240. <classname>Zend_Reflection_Function</classname>は、
  241. 返されたReflectionを使ってReflectionクラスを指定できるように、
  242. いくつかのメソッドを上書きするばかりではなく、
  243. 関数の返り値を取得するメソッドを追加します。
  244. </para>
  245. <itemizedlist>
  246. <listitem><para>
  247. <code>getDocblock($reflectionClass =
  248. 'Zend_Reflection_Docblock')</code>: 関数docblockの
  249. Reflectionオブジェクトを取得します
  250. </para></listitem>
  251. <listitem><para>
  252. <code>getParameters($reflectionClass =
  253. 'Zend_Reflection_Parameter')</code>: 関数のパラメータ
  254. Reflectionオブジェクト全ての配列を取得します
  255. </para></listitem>
  256. <listitem><para>
  257. <code>getReturn()</code>: 戻す型のReflectionオブジェクトを取得します
  258. </para></listitem>
  259. </itemizedlist>
  260. </sect2>
  261. <sect2 id="zend.reflection.reference.method">
  262. <title>Zend_Reflection_Method</title>
  263. <para>
  264. <classname>Zend_Reflection_Method</classname>は<classname>Zend_Reflection_Function</classname>を継承して、
  265. 追加のメソッドを1つだけ上書きします:
  266. </para>
  267. <itemizedlist>
  268. <listitem><para>
  269. <code>getParentClass($reflectionClass =
  270. 'Zend_Reflection_Class')</code>: 親クラスのReflectionオブジェクトを取得します
  271. </para></listitem>
  272. </itemizedlist>
  273. </sect2>
  274. <sect2 id="zend.reflection.reference.parameter">
  275. <title>Zend_Reflection_Parameter</title>
  276. <para>
  277. <classname>Zend_Reflection_Parameter</classname>は
  278. 戻されたReflectionオブジェクトで
  279. Reflectionを使えるようにする上書きメソッドばかりではなく、
  280. パラメータの型を取得するメソッドを追加します。
  281. </para>
  282. <itemizedlist>
  283. <listitem><para>
  284. <code>getDeclaringClass($reflectionClass =
  285. 'Zend_Reflection_Class')</code>: もし可能ならば、
  286. Reflectionオブジェクトとしてパラメータの宣言クラスを取得します。
  287. </para></listitem>
  288. <listitem><para>
  289. <code>getClass($reflectionClass =
  290. 'Zend_Reflection_Class')</code>: もし可能ならば、
  291. Reflectionオブジェクトとしてパラメータのクラスを取得します。
  292. </para></listitem>
  293. <listitem><para>
  294. <code>getDeclaringFunction($reflectionClass =
  295. 'Zend_Reflection_Function')</code>: もし可能ならば、
  296. Reflectionオブジェクトとしてパラメータの関数を取得します。
  297. </para></listitem>
  298. <listitem><para>
  299. <code>getType()</code>: パラメータの型を取得します
  300. </para></listitem>
  301. </itemizedlist>
  302. </sect2>
  303. <sect2 id="zend.reflection.reference.property">
  304. <title>Zend_Reflection_Property</title>
  305. <para>
  306. <classname>Zend_Reflection_Property</classname>は、
  307. 戻されたReflectionオブジェクトクラスを指定するための、
  308. メソッドを1つ上書きします。:
  309. </para>
  310. <itemizedlist>
  311. <listitem><para>
  312. <code>getDeclaringClass($reflectionClass =
  313. 'Zend_Reflection_Class')</code>: Reflectionオブジェクトとして
  314. プロパティーの宣言クラスを取得します
  315. </para></listitem>
  316. </itemizedlist>
  317. </sect2>
  318. </sect1>