[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_CodeGenerator-Reference.xml
blobdc1882d4068fbc3396eaa2b08e3e72054b6c0105
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20765 -->
4 <sect1 id="zend.codegenerator.reference">
5     <title>Zend_CodeGenerator リファレンス</title>
7     <sect2 id="zend.codegenerator.reference.abstracts">
8         <title>抽象クラスとインターフェース</title>
10         <sect3 id="zend.codegenerator.reference.abstracts.abstract">
11             <title>Zend_CodeGenerator_Abstract</title>
13             <para>
14                 すべての CodeGenerator クラスが継承する基底のクラスは、
15                 必要な最小限の機能性を提供します。
16                 その<acronym>API</acronym>は下記の通りです。:
17             </para>
19             <programlisting language="php"><![CDATA[
20 abstract class Zend_CodeGenerator_Abstract
22     final public function __construct(Array $options = array())
23     public function setOptions(Array $options)
24     public function setSourceContent($sourceContent)
25     public function getSourceContent()
26     protected function _init()
27     protected function _prepare()
28     abstract public function generate();
29     final public function __toString()
31 ]]></programlisting>
33             <para>
34                 コンストラクタは最初に <methodname>_init()</methodname> を呼び出します。
35                 (それは、具体的に拡張するクラスを実装するために空のままにされます)
36                 それから <methodname>setOptions()</methodname> に <varname>$options</varname> パラメータを渡し、
37                 最後に <methodname>_prepare()</methodname> を呼び出します。
38                 (<!-- TODO -->again, 
39                 クラスの拡張によって実装されます。)
40             </para>
42             <para>
43                 Zend Framework のほとんどのクラスのように、
44                 <methodname>setOptions()</methodname> ではクラスの既存のセッターへのオプション・キーを比較して、
45                 見つかったら、メソッドに値を渡します。
46             </para>
48             <para>
49                 <methodname>__toString()</methodname> は最後に指定され、
50                 <methodname>generate()</methodname> の代わりをします。
51             </para>
53             <para>
54                 <methodname>setSourceContent()</methodname> 及び <methodname>getSourceContent()</methodname> は
55                 デフォルト・コンテンツを生成されたコードに設定するか、
56                 一旦すべての生成作業が完了した前述のコンテンツと入れ替えることを目的とします。
57             </para>
58         </sect3>
60         <sect3 id="zend.codegenerator.reference.abstracts.php-abstract">
61             <title>Zend_CodeGenerator_Php_Abstract</title>
63             <para>
64                 <classname>Zend_CodeGenerator_Php_Abstract</classname> は
65                 <classname>Zend_CodeGenerator_Abstract</classname> を拡張し、
66                 生成されたコンテンツの前に現れなければならないインデントの量だけでなく、
67                 コンテンツが変わったかどうか追跡するための若干のプロパティも加えます。
68                 その <acronym>API</acronym> は下記の通りです。:
69             </para>
71             <programlisting language="php"><![CDATA[
72 abstract class Zend_CodeGenerator_Php_Abstract
73     extends Zend_CodeGenerator_Abstract
75     public function setSourceDirty($isSourceDirty = true)
76     public function isSourceDirty()
77     public function setIndentation($indentation)
78     public function getIndentation()
80 ]]></programlisting>
81         </sect3>
83         <sect3 id="zend.codegenerator.reference.abstracts.php-member-abstract">
84             <title>Zend_CodeGenerator_Php_Member_Abstract</title>
86             <para>
87                 <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> は
88                 クラスのメンバー - プロパティとメソッド - を生成するための基底クラスで、
89                 可視性を確立するためのアクセッサとミューテータを提供します;
90                 メンバーやメンバー名が abstract 、 static または final のいずれにせよ。
91                 その <acronym>API</acronym> は下記の通りです。:
92             </para>
94             <programlisting language="php"><![CDATA[
95 abstract class Zend_CodeGenerator_Php_Member_Abstract
96     extends Zend_CodeGenerator_Php_Abstract
98     public function setAbstract($isAbstract)
99     public function isAbstract()
100     public function setStatic($isStatic)
101     public function isStatic()
102     public function setVisibility($visibility)
103     public function getVisibility()
104     public function setName($name)
105     public function getName()
107 ]]></programlisting>
108         </sect3>
109     </sect2>
111     <sect2 id="zend.codegenerator.reference.concrete">
112         <title>CodeGenerator クラスを確立</title>
114         <sect3 id="zend.codegenerator.reference.concrete.php-body">
115             <title>Zend_CodeGenerator_Php_Body</title>
117             <para>
118                 <classname>Zend_CodeGenerator_Php_Body</classname> は、
119                 ファイルの中に含む任意の手続き的なコードを生成することを目的とします。
120                 そのように、単にコンテンツをオブジェクトに設定し、
121                 <methodname>generate()</methodname> を実施すると、それはそのコンテンツを返します。
122             </para>
124             <para>
125             
126                 そのクラスの <acronym>API</acronym> は下記の通りです。:
127             </para>
129             <programlisting language="php"><![CDATA[
130 class Zend_CodeGenerator_Php_Body extends Zend_CodeGenerator_Php_Abstract
132     public function setContent($content)
133     public function getContent()
134     public function generate()
136 ]]></programlisting>
137         </sect3>
139         <sect3 id="zend.codegenerator.reference.concrete.php-class">
140             <title>Zend_CodeGenerator_Php_Class</title>
142             <para>
143                 <classname>Zend_CodeGenerator_Php_Class</classname> は、
144                 <acronym>PHP</acronym> クラスを生成することを目的とします。
145                 基本的機能では <acronym>PHP</acronym> クラスそのものを生成し、
146                 また、任意で関連した <acronym>PHP</acronym> DocBlockも生成します。
147                 クラスは他のクラスを実装するかもしれませんし、継承するかもしれません。
148                 またはabstractと指定されるかもしれません。
149                 他のコード・ジェネレーター・クラスを利用して、
150                 クラスの定数やプロパティ、メソッドを付与することもできます。
151             </para>
153             <para>
154                 その <acronym>API</acronym> は下記の通りです。:
155             </para>
157             <programlisting language="php"><![CDATA[
158 class Zend_CodeGenerator_Php_Class extends Zend_CodeGenerator_Php_Abstract
160     public static function fromReflection(
161         Zend_Reflection_Class $reflectionClass
162     )
163     public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
164     public function getDocblock()
165     public function setName($name)
166     public function getName()
167     public function setAbstract($isAbstract)
168     public function isAbstract()
169     public function setExtendedClass($extendedClass)
170     public function getExtendedClass()
171     public function setImplementedInterfaces(Array $implementedInterfaces)
172     public function getImplementedInterfaces()
173     public function setProperties(Array $properties)
174     public function setProperty($property)
175     public function getProperties()
176     public function getProperty($propertyName)
177     public function setMethods(Array $methods)
178     public function setMethod($method)
179     public function getMethods()
180     public function getMethod($methodName)
181     public function hasMethod($methodName)
182     public function isSourceDirty()
183     public function generate()
185 ]]></programlisting>
187             <para>
188                 <methodname>setProperty()</methodname> メソッドは、
189                 <classname>Zend_CodeGenerator_Php_Property</classname> インスタンスを生成するために
190                 用いられるかもしれない情報の配列、
191                 またはただ単に <classname>Zend_CodeGenerator_Php_Property</classname> インスタンス、
192                 を受け入れます。
193                 同様に <methodname>setMethod()</methodname> は、
194                 <classname>Zend_CodeGenerator_Php_Method</classname> インスタンスを生成するための、
195                 情報の配列またはそのクラスの具体化したインスタンスを受け入れます。
196             </para>
198             <para>
199                 <methodname>setDocBlock()</methodname> が <classname>Zend_CodeGenerator_Php_DocBlock</classname> の
200                 インスタンスを期待することも注意してください。
201             </para>
202         </sect3>
204         <sect3 id="zend.codegenerator.reference.concrete.php-docblock">
205             <title>Zend_CodeGenerator_Php_Docblock</title>
207             <para>
208                 <classname>Zend_CodeGenerator_Php_Docblock</classname> は、
209                 すべての標準的な docblock 機能を含む任意の <acronym>PHP</acronym> docblock を生成することで使用できます:
210                 短い、または長い説明や注釈タグ。
211             </para>
213             <para>
214                 注釈タグは <methodname>setTag()</methodname> や <methodname>setTags()</methodname> メソッドを用いてセットされるかもしれません;
215                 これらは <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> コンストラクタに渡されるかもしれないタグを記述している配列、
216                 またはそのクラスのインスタンスどちらもそれぞれ
217                 <!-- TODO -->take
218             </para>
220             <para>
221                 その <acronym>API</acronym> は下記の通りです。:
222             </para>
224             <programlisting language="php"><![CDATA[
225 class Zend_CodeGenerator_Php_Docblock extends Zend_CodeGenerator_Php_Abstract
227     public static function fromReflection(
228         Zend_Reflection_Docblock $reflectionDocblock
229     )
230     public function setShortDescription($shortDescription)
231     public function getShortDescription()
232     public function setLongDescription($longDescription)
233     public function getLongDescription()
234     public function setTags(Array $tags)
235     public function setTag($tag)
236     public function getTags()
237     public function generate()
239 ]]></programlisting>
240         </sect3>
242         <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag">
243             <title>Zend_CodeGenerator_Php_Docblock_Tag</title>
245             <para>
246                 <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> は、
247                 <acronym>PHP</acronym> docblock に含む任意の注釈タグを作成することを目的とします。
248                 タグは、名前(@記号にすぐ続く部分)と説明(タグ名に続いているすべて)を含むことになっています。
249             </para>
251             <para>
252                 そのクラスの <acronym>API</acronym> は下記の通りです。:
253             </para>
255             <programlisting language="php"><![CDATA[
256 class Zend_CodeGenerator_Php_Docblock_Tag
257     extends Zend_CodeGenerator_Php_Abstract
259     public static function fromReflection(
260         Zend_Reflection_Docblock_Tag $reflectionTag
261     )
262     public function setName($name)
263     public function getName()
264     public function setDescription($description)
265     public function getDescription()
266     public function generate()
268 ]]></programlisting>
269         </sect3>
271         <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-param">
272             <title>Zend_CodeGenerator_Php_DocBlock_Tag_Param</title>
274             <para>
275                 <classname>Zend_CodeGenerator_Php_DocBlock_Tag_Param</classname> は
276                 <classname>Zend_CodeGenerator_Php_DocBlock_Tag</classname> の分化したバージョンで、
277                 メソッド・パラメータを表します。
278                 そこで、タグ名は( "param" )として知られています、
279                 しかし、この注釈タグを構成するパラメータ名とデータ型を生成するために、
280                 追加の情報が必要とされます。
281             </para>
283             <para>
284                 そのクラスの <acronym>API</acronym> は下記の通りです。:
285             </para>
287             <programlisting language="php"><![CDATA[
288 class Zend_CodeGenerator_Php_Docblock_Tag_Param
289     extends Zend_CodeGenerator_Php_Docblock_Tag
291     public static function fromReflection(
292         Zend_Reflection_Docblock_Tag $reflectionTagParam
293     )
294     public function setDatatype($datatype)
295     public function getDatatype()
296     public function setParamName($paramName)
297     public function getParamName()
298     public function generate()
300 ]]></programlisting>
301         </sect3>
303         <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-return">
304             <title>Zend_CodeGenerator_Php_DocBlock_Tag_Return</title>
306             <para>
307                 param docblock <!-- TODO -->tag variant のように、
308                 <classname>Zend_CodeGenerator_Php_Docblock_Tab_Return</classname> は
309                 メソッドの戻り値を表すための注釈 <!-- TODO -->tag variantです。
310                 この場合、注釈タグ名は( "return" )として知られていますが、戻す型を必要とします。
311             </para>
313             <para>
314                 そのクラスの <acronym>API</acronym> は下記の通りです。:
315             </para>
317             <programlisting language="php"><![CDATA[
318 class Zend_CodeGenerator_Php_Docblock_Tag_Param
319     extends Zend_CodeGenerator_Php_Docblock_Tag
321     public static function fromReflection(
322         Zend_Reflection_Docblock_Tag $reflectionTagReturn
323     )
324     public function setDatatype($datatype)
325     public function getDatatype()
326     public function generate()
328 ]]></programlisting>
329         </sect3>
331         <sect3 id="zend.codegenerator.reference.concrete.php-file">
332             <title>Zend_CodeGenerator_Php_File</title>
334             <para>
335                 <classname>Zend_CodeGenerator_Php_File</classname> は、
336                 <acronym>PHP</acronym> コードを含むファイルの完全なコンテンツを生成することに使われます。
337                 ファイル・レベルの docblock と同様に必要に応じて、
338                 ファイルはクラスまたは任意の <acronym>PHP</acronym> コードを含むかもしれません。
339             </para>
341             <para>
342                 クラスをファイルに加えるとき、
343                 <classname>Zend_CodeGenerator_Php_Class</classname> コンストラクタに渡す情報の配列か、
344                 そのクラスのインスタンスのどちらかを渡す必要があります。
345                 同様に docblock で、 <classname>Zend_CodeGenerator_Php_Docblock</classname> コンストラクタが消費する情報、
346                 またはクラスのインスタンスを渡す必要があります。
347             </para>
349             <para>
350                 そのクラスの <acronym>API</acronym> は下記の通りです。:
351             </para>
353             <programlisting language="php"><![CDATA[
354 class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
356     public static function fromReflectedFilePath(
357         $filePath,
358         $usePreviousCodeGeneratorIfItExists = true,
359         $includeIfNotAlreadyIncluded = true)
360     public static function fromReflection(Zend_Reflection_File $reflectionFile)
361     public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
362     public function getDocblock()
363     public function setRequiredFiles($requiredFiles)
364     public function getRequiredFiles()
365     public function setClasses(Array $classes)
366     public function getClass($name = null)
367     public function setClass($class)
368     public function setFilename($filename)
369     public function getFilename()
370     public function getClasses()
371     public function setBody($body)
372     public function getBody()
373     public function isSourceDirty()
374     public function generate()
376 ]]></programlisting>
377         </sect3>
379         <sect3 id="zend.codegenerator.reference.concrete.php-member-container">
380             <title>Zend_CodeGenerator_Php_Member_Container</title>
382             <para>
383                 <classname>Zend_CodeGenerator_Php_Member_Container</classname> は、
384                 <classname>Zend_CodeGenerator_Php_Class</classname> によって、
385                 内部的にクラスのメンバー - プロパティやメソッドなど - の経過を追う目的に使われます。
386             </para>
388             <para>
389                 そのクラスの <acronym>API</acronym> は下記の通りです。:
390             </para>
392             <programlisting language="php"><![CDATA[
393 class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
395     public function __construct($type = self::TYPE_PROPERTY)
397 ]]></programlisting>
398         </sect3>
400         <sect3 id="zend.codegenerator.reference.concrete.php-method">
401             <title>Zend_CodeGenerator_Php_Method</title>
403             <para>
404                 <classname>Zend_CodeGenerator_Php_Method</classname> は、
405                 クラス・メソッドを記述して、
406                 メソッドのためにコードと docblock を生成できます。
407                 その親クラス、 <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> の通りに、
408                 static 、 abstract または final としての可視性と状態が指示されるかもしれません。
409                 最後に、メソッドのパラメータと戻り値は、指定されるかもしれません。
410             </para>
412             <para>
413                 パラメータは <methodname>setParameter()</methodname> または <methodname>setParameters()</methodname> を用いて設定されるかもしれません。
414                 それぞれの場合、パラメータは <classname>Zend_CodeGenerator_Php_Parameter</classname> コンストラクタに渡す情報の配列か、
415                 またはそのクラスのインスタンスでなければいけません。
416             </para>
418             <para>
419                 そのクラスの <acronym>API</acronym> は下記の通りです。:
420             </para>
422             <programlisting language="php"><![CDATA[
423 class Zend_CodeGenerator_Php_Method
424     extends Zend_CodeGenerator_Php_Member_Abstract
426     public static function fromReflection(
427         Zend_Reflection_Method $reflectionMethod
428     )
429     public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
430     public function getDocblock()
431     public function setFinal($isFinal)
432     public function setParameters(Array $parameters)
433     public function setParameter($parameter)
434     public function getParameters()
435     public function setBody($body)
436     public function getBody()
437     public function generate()
439 ]]></programlisting>
440         </sect3>
442         <sect3 id="zend.codegenerator.reference.concrete.php-parameter">
443             <title>Zend_CodeGenerator_Php_Parameter</title>
445             <para>
446                 <classname>Zend_CodeGenerator_Php_Parameter</classname> は、
447                 メソッドのパラメータを指定することに使われるかもしれません。
448                 各々のパラメータは、位置やデフォルト値、データ型を持つかもしれません;
449                 パラメータ名は必須です。
450                 位置がもし明確でなければ、それらがメソッドで記載された順序が使われます。
451             </para>
453             <para>
454                 そのクラスの <acronym>API</acronym> は下記の通りです。:
455             </para>
457             <programlisting language="php"><![CDATA[
458 class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
460     public static function fromReflection(
461         Zend_Reflection_Parameter $reflectionParameter
462     )
463     public function setType($type)
464     public function getType()
465     public function setName($name)
466     public function getName()
467     public function setDefaultValue($defaultValue)
468     public function getDefaultValue()
469     public function setPosition($position)
470     public function getPosition()
471     public function getPassedByReference()
472     public function setPassedByReference($passedByReference)
473     public function generate()
475 ]]></programlisting>
477             <para>
478                 既定値として <constant>NULL</constant> 、ブーリアンまたは配列を設定しようとすると、
479                 いくつかの問題が起きるかもしれません。
480                 このために、バリューホルダー・オブジェクト
481                 <classname>Zend_CodeGenerator_Php_ParameterDefaultValue</classname>
482                 を利用できます。例えば:
483             </para>
485             <programlisting language="php"><![CDATA[
486 $parameter = new Zend_CodeGenerator_Php_Parameter();
487 $parameter->setDefaultValue(
488     new Zend_CodeGenerator_Php_Parameter_DefaultValue("null")
490 $parameter->setDefaultValue(
491     new Zend_CodeGenerator_Php_Parameter_DefaultValue("array('foo', 'bar')")
493 ]]></programlisting>
495             <para>
496                 内部的には <methodname>setDefaultValue()</methodname> も
497                 <acronym>PHP</acronym> で表現できない値をバリューホルダーに変換します。
498             </para>
500         </sect3>
502         <sect3 id="zend.codegenerator.reference.concrete.php-property">
503             <title>Zend_CodeGenerator_Php_Property</title>
505             <para>
506                 <classname>Zend_CodeGenerator_Php_Property</classname> はクラスのプロパティを記述します。
507                 それは定数か変数であるかもしれません。
508                 どちらの場合も、プロパティには関連するデフォルト値をオプションで持つかもしれません。
509                 さらに、親クラス( <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> )を通じて
510                 変数のプロパティの可視性が設定されるかもしれません。
511             </para>
513             <para>
514                 そのクラスの <acronym>API</acronym> は下記の通りです。:
515             </para>
517             <programlisting language="php"><![CDATA[
518 class Zend_CodeGenerator_Php_Property
519     extends Zend_CodeGenerator_Php_Member_Abstract
521     public static function fromReflection(
522         Zend_Reflection_Property $reflectionProperty
523     )
524     public function setConst($const)
525     public function isConst()
526     public function setDefaultValue($defaultValue)
527     public function getDefaultValue()
528     public function generate()
530 ]]></programlisting>
531         </sect3>
532     </sect2>
533 </sect1>