1 <?xml version="1.0" encoding="UTF-8"?>
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>
14 すべての CodeGenerator クラスが継承する基底のクラスは、
16 その<acronym>API</acronym>は下記の通りです。:
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()
34 コンストラクタは最初に <methodname>_init()</methodname> を呼び出します。
35 (それは、具体的に拡張するクラスを実装するために空のままにされます)
36 それから <methodname>setOptions()</methodname> に <varname>$options</varname> パラメータを渡し、
37 最後に <methodname>_prepare()</methodname> を呼び出します。
43 Zend Framework のほとんどのクラスのように、
44 <methodname>setOptions()</methodname> ではクラスの既存のセッターへのオプション・キーを比較して、
49 <methodname>__toString()</methodname> は最後に指定され、
50 <methodname>generate()</methodname> の代わりをします。
54 <methodname>setSourceContent()</methodname> 及び <methodname>getSourceContent()</methodname> は
55 デフォルト・コンテンツを生成されたコードに設定するか、
56 一旦すべての生成作業が完了した前述のコンテンツと入れ替えることを目的とします。
60 <sect3 id="zend.codegenerator.reference.abstracts.php-abstract">
61 <title>Zend_CodeGenerator_Php_Abstract</title>
64 <classname>Zend_CodeGenerator_Php_Abstract</classname> は
65 <classname>Zend_CodeGenerator_Abstract</classname> を拡張し、
66 生成されたコンテンツの前に現れなければならないインデントの量だけでなく、
67 コンテンツが変わったかどうか追跡するための若干のプロパティも加えます。
68 その <acronym>API</acronym> は下記の通りです。:
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()
83 <sect3 id="zend.codegenerator.reference.abstracts.php-member-abstract">
84 <title>Zend_CodeGenerator_Php_Member_Abstract</title>
87 <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> は
88 クラスのメンバー - プロパティとメソッド - を生成するための基底クラスで、
89 可視性を確立するためのアクセッサとミューテータを提供します;
90 メンバーやメンバー名が abstract 、 static または final のいずれにせよ。
91 その <acronym>API</acronym> は下記の通りです。:
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()
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>
118 <classname>Zend_CodeGenerator_Php_Body</classname> は、
119 ファイルの中に含む任意の手続き的なコードを生成することを目的とします。
120 そのように、単にコンテンツをオブジェクトに設定し、
121 <methodname>generate()</methodname> を実施すると、それはそのコンテンツを返します。
126 そのクラスの <acronym>API</acronym> は下記の通りです。:
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()
139 <sect3 id="zend.codegenerator.reference.concrete.php-class">
140 <title>Zend_CodeGenerator_Php_Class</title>
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 クラスの定数やプロパティ、メソッドを付与することもできます。
154 その <acronym>API</acronym> は下記の通りです。:
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
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()
188 <methodname>setProperty()</methodname> メソッドは、
189 <classname>Zend_CodeGenerator_Php_Property</classname> インスタンスを生成するために
191 またはただ単に <classname>Zend_CodeGenerator_Php_Property</classname> インスタンス、
193 同様に <methodname>setMethod()</methodname> は、
194 <classname>Zend_CodeGenerator_Php_Method</classname> インスタンスを生成するための、
195 情報の配列またはそのクラスの具体化したインスタンスを受け入れます。
199 <methodname>setDocBlock()</methodname> が <classname>Zend_CodeGenerator_Php_DocBlock</classname> の
200 インスタンスを期待することも注意してください。
204 <sect3 id="zend.codegenerator.reference.concrete.php-docblock">
205 <title>Zend_CodeGenerator_Php_Docblock</title>
208 <classname>Zend_CodeGenerator_Php_Docblock</classname> は、
209 すべての標準的な docblock 機能を含む任意の <acronym>PHP</acronym> docblock を生成することで使用できます:
214 注釈タグは <methodname>setTag()</methodname> や <methodname>setTags()</methodname> メソッドを用いてセットされるかもしれません;
215 これらは <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> コンストラクタに渡されるかもしれないタグを記述している配列、
216 またはそのクラスのインスタンスどちらもそれぞれ
221 その <acronym>API</acronym> は下記の通りです。:
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
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()
242 <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag">
243 <title>Zend_CodeGenerator_Php_Docblock_Tag</title>
246 <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> は、
247 <acronym>PHP</acronym> docblock に含む任意の注釈タグを作成することを目的とします。
248 タグは、名前(@記号にすぐ続く部分)と説明(タグ名に続いているすべて)を含むことになっています。
252 そのクラスの <acronym>API</acronym> は下記の通りです。:
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
262 public function setName($name)
263 public function getName()
264 public function setDescription($description)
265 public function getDescription()
266 public function generate()
271 <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-param">
272 <title>Zend_CodeGenerator_Php_DocBlock_Tag_Param</title>
275 <classname>Zend_CodeGenerator_Php_DocBlock_Tag_Param</classname> は
276 <classname>Zend_CodeGenerator_Php_DocBlock_Tag</classname> の分化したバージョンで、
278 そこで、タグ名は( "param" )として知られています、
279 しかし、この注釈タグを構成するパラメータ名とデータ型を生成するために、
284 そのクラスの <acronym>API</acronym> は下記の通りです。:
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
294 public function setDatatype($datatype)
295 public function getDatatype()
296 public function setParamName($paramName)
297 public function getParamName()
298 public function generate()
303 <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-return">
304 <title>Zend_CodeGenerator_Php_DocBlock_Tag_Return</title>
307 param docblock <!-- TODO -->tag variant のように、
308 <classname>Zend_CodeGenerator_Php_Docblock_Tab_Return</classname> は
309 メソッドの戻り値を表すための注釈 <!-- TODO -->tag variantです。
310 この場合、注釈タグ名は( "return" )として知られていますが、戻す型を必要とします。
314 そのクラスの <acronym>API</acronym> は下記の通りです。:
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
324 public function setDatatype($datatype)
325 public function getDatatype()
326 public function generate()
331 <sect3 id="zend.codegenerator.reference.concrete.php-file">
332 <title>Zend_CodeGenerator_Php_File</title>
335 <classname>Zend_CodeGenerator_Php_File</classname> は、
336 <acronym>PHP</acronym> コードを含むファイルの完全なコンテンツを生成することに使われます。
337 ファイル・レベルの docblock と同様に必要に応じて、
338 ファイルはクラスまたは任意の <acronym>PHP</acronym> コードを含むかもしれません。
343 <classname>Zend_CodeGenerator_Php_Class</classname> コンストラクタに渡す情報の配列か、
344 そのクラスのインスタンスのどちらかを渡す必要があります。
345 同様に docblock で、 <classname>Zend_CodeGenerator_Php_Docblock</classname> コンストラクタが消費する情報、
346 またはクラスのインスタンスを渡す必要があります。
350 そのクラスの <acronym>API</acronym> は下記の通りです。:
353 <programlisting language="php"><![CDATA[
354 class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
356 public static function fromReflectedFilePath(
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()
379 <sect3 id="zend.codegenerator.reference.concrete.php-member-container">
380 <title>Zend_CodeGenerator_Php_Member_Container</title>
383 <classname>Zend_CodeGenerator_Php_Member_Container</classname> は、
384 <classname>Zend_CodeGenerator_Php_Class</classname> によって、
385 内部的にクラスのメンバー - プロパティやメソッドなど - の経過を追う目的に使われます。
389 そのクラスの <acronym>API</acronym> は下記の通りです。:
392 <programlisting language="php"><![CDATA[
393 class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
395 public function __construct($type = self::TYPE_PROPERTY)
400 <sect3 id="zend.codegenerator.reference.concrete.php-method">
401 <title>Zend_CodeGenerator_Php_Method</title>
404 <classname>Zend_CodeGenerator_Php_Method</classname> は、
406 メソッドのためにコードと docblock を生成できます。
407 その親クラス、 <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> の通りに、
408 static 、 abstract または final としての可視性と状態が指示されるかもしれません。
409 最後に、メソッドのパラメータと戻り値は、指定されるかもしれません。
413 パラメータは <methodname>setParameter()</methodname> または <methodname>setParameters()</methodname> を用いて設定されるかもしれません。
414 それぞれの場合、パラメータは <classname>Zend_CodeGenerator_Php_Parameter</classname> コンストラクタに渡す情報の配列か、
415 またはそのクラスのインスタンスでなければいけません。
419 そのクラスの <acronym>API</acronym> は下記の通りです。:
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
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()
442 <sect3 id="zend.codegenerator.reference.concrete.php-parameter">
443 <title>Zend_CodeGenerator_Php_Parameter</title>
446 <classname>Zend_CodeGenerator_Php_Parameter</classname> は、
447 メソッドのパラメータを指定することに使われるかもしれません。
448 各々のパラメータは、位置やデフォルト値、データ型を持つかもしれません;
450 位置がもし明確でなければ、それらがメソッドで記載された順序が使われます。
454 そのクラスの <acronym>API</acronym> は下記の通りです。:
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
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()
478 既定値として <constant>NULL</constant> 、ブーリアンまたは配列を設定しようとすると、
480 このために、バリューホルダー・オブジェクト
481 <classname>Zend_CodeGenerator_Php_ParameterDefaultValue</classname>
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')")
496 内部的には <methodname>setDefaultValue()</methodname> も
497 <acronym>PHP</acronym> で表現できない値をバリューホルダーに変換します。
502 <sect3 id="zend.codegenerator.reference.concrete.php-property">
503 <title>Zend_CodeGenerator_Php_Property</title>
506 <classname>Zend_CodeGenerator_Php_Property</classname> はクラスのプロパティを記述します。
508 どちらの場合も、プロパティには関連するデフォルト値をオプションで持つかもしれません。
509 さらに、親クラス( <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> )を通じて
510 変数のプロパティの可視性が設定されるかもしれません。
514 そのクラスの <acronym>API</acronym> は下記の通りです。:
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
524 public function setConst($const)
525 public function isConst()
526 public function setDefaultValue($defaultValue)
527 public function getDefaultValue()
528 public function generate()