Programmer's Reference Guide
| Zend_CodeGeneratorサンプル |
Zend_CodeGeneratorリファレンス
抽象クラスとインターフェース
Zend_CodeGenerator_Abstract
すべてのCodeGeneratorクラスが継承する基底のクラスは、 必要な最小限の機能性を提供します。 そのAPIは下記の通りです。:
- abstract class Zend_CodeGenerator_Abstract
- {
- public function setSourceContent($sourceContent)
- public function getSourceContent()
- protected function _init()
- protected function _prepare()
- abstract public function generate();
- final public function __toString()
- }
コンストラクタは最初に _init()を呼び出します。 (それは、具体的に拡張するクラスを実装するために空のままにされます) それから setOptions()に$optionsパラメータを渡し、 最後に _prepare()を呼び出します。 (again, クラスの拡張によって実装されます。)
Zend Frameworkのほとんどのクラスのように、 setOptions()ではクラスの既存のセッターへのオプション・キーを比較して、 見つかったら、メソッドに値を渡します。
__toString()は最後に指定され、 generate()の代わりをします。
setSourceContent()及び getSourceContent()は デフォルト・コンテンツを生成されたコードに設定するか、 一旦すべての生成作業が完了した前述のコンテンツと入れ替えることを目的とします。
Zend_CodeGenerator_Php_Abstract
Zend_CodeGenerator_Php_Abstractは Zend_CodeGenerator_Abstractを拡張し、 生成されたコンテンツの前に現れなければならないインデントの量だけでなく、 コンテンツが変わったかどうか追跡するための若干のプロパティも加えます。 そのAPIは下記の通りです。:
- abstract class Zend_CodeGenerator_Php_Abstract
- extends Zend_CodeGenerator_Abstract
- {
- public function setSourceDirty($isSourceDirty = true)
- public function isSourceDirty()
- public function setIndentation($indentation)
- public function getIndentation()
- }
Zend_CodeGenerator_Php_Member_Abstract
Zend_CodeGenerator_Php_Member_Abstractは クラスのメンバー - プロパティとメソッド - を生成するための基底クラスで、 可視性を確立するためのアクセッサとミューテータを提供します; メンバーやメンバー名がabstract、staticまたはfinalのいずれにせよ。 そのAPIは下記の通りです。:
- abstract class Zend_CodeGenerator_Php_Member_Abstract
- extends Zend_CodeGenerator_Php_Abstract
- {
- public function setAbstract($isAbstract)
- public function isAbstract()
- public function setStatic($isStatic)
- public function isStatic()
- public function setVisibility($visibility)
- public function getVisibility()
- public function setName($name)
- public function getName()
- }
Concrete CodeGenerator Classes
Zend_CodeGenerator_Php_Body
Zend_CodeGenerator_Php_Bodyは、 ファイルの中に含む任意の手続き的なコードを生成することを目的とします。 そのように、単にコンテンツをオブジェクトに設定し、 generate()を実施すると、それはそのコンテンツを返します。
そのクラスのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Body extends Zend_CodeGenerator_Php_Abstract
- {
- public function setContent($content)
- public function getContent()
- public function generate()
- }
Zend_CodeGenerator_Php_Class
Zend_CodeGenerator_Php_Classは、 PHPクラスを生成することを目的とします。 基本的機能ではPHPクラスそのものを生成し、 また、任意で関連したPHP DocBlockも生成します。 クラスは他のクラスを実装するかもしれませんし、継承するかもしれません。 またはabstractと指定されるかもしれません。 他のコード・ジェネレーター・クラスを利用して、 クラスの定数やプロパティ、メソッドを付与することもできます。
そのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Class extends Zend_CodeGenerator_Php_Abstract
- {
- Zend_Reflection_Class $reflectionClass
- )
- public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
- public function getDocblock()
- public function setName($name)
- public function getName()
- public function setAbstract($isAbstract)
- public function isAbstract()
- public function setExtendedClass($extendedClass)
- public function getExtendedClass()
- public function getImplementedInterfaces()
- public function setProperty($property)
- public function getProperties()
- public function getProperty($propertyName)
- public function setMethod($method)
- public function getMethods()
- public function getMethod($methodName)
- public function hasMethod($methodName)
- public function isSourceDirty()
- public function generate()
- }
setProperty()メソッドは、 Zend_CodeGenerator_Php_Propertyインスタンスを生成するために 用いられるかもしれない情報の配列、 またはただ単にZend_CodeGenerator_Php_Propertyインスタンス、 を受け入れます。 同様に setMethod()は、 Zend_CodeGenerator_Php_Methodインスタンスを生成するための、 情報の配列またはそのクラスの具体化したインスタンスを受け入れます。
setDocBlock()がZend_CodeGenerator_Php_DocBlockの インスタンスを期待することも注意してください。
Zend_CodeGenerator_Php_Docblock
Zend_CodeGenerator_Php_Docblockは、 すべての標準的なdocblock機能を含む任意のPHP docblockを生成することで使うことができます: 短い、または長い説明や注釈タグ。
注釈タグは setTag()や setTags()メソッドを用いてセットされるかもしれません; これらはZend_CodeGenerator_Php_Docblock_Tagコンストラクタに渡されるかもしれないタグを記述している配列、 またはそのクラスのインスタンスどちらもそれぞれ take
そのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Docblock extends Zend_CodeGenerator_Php_Abstract
- {
- Zend_Reflection_Docblock $reflectionDocblock
- )
- public function setShortDescription($shortDescription)
- public function getShortDescription()
- public function setLongDescription($longDescription)
- public function getLongDescription()
- public function setTag($tag)
- public function getTags()
- public function generate()
- }
Zend_CodeGenerator_Php_Docblock_Tag
Zend_CodeGenerator_Php_Docblock_Tagは、 PHP docblockに含む任意の注釈タグを作成することを目的とします。 タグは、名前(@記号にすぐ続く部分)と説明(タグ名に続いているすべて)を含むことになっています。
そのクラスのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Docblock_Tag
- extends Zend_CodeGenerator_Php_Abstract
- {
- Zend_Reflection_Docblock_Tag $reflectionTag
- )
- public function setName($name)
- public function getName()
- public function setDescription($description)
- public function getDescription()
- public function generate()
- }
Zend_CodeGenerator_Php_DocBlock_Tag_Param
Zend_CodeGenerator_Php_DocBlock_Tag_Paramは Zend_CodeGenerator_Php_DocBlock_Tagの分化したバージョンで、 メソッド・パラメータを表します。 そこで、タグ名は("param")として知られています、 しかし、この注釈タグを構成するパラメータ名とデータ型を生成するために、 追加の情報が必要とされます。
そのクラスのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Docblock_Tag_Param
- extends Zend_CodeGenerator_Php_Docblock_Tag
- {
- Zend_Reflection_Docblock_Tag $reflectionTagParam
- )
- public function setDatatype($datatype)
- public function getDatatype()
- public function setParamName($paramName)
- public function getParamName()
- public function generate()
- }
Zend_CodeGenerator_Php_DocBlock_Tag_Return
param docblock tag variantのように、 Zend_CodeGenerator_Php_Docblock_Tab_Returnは メソッドの戻り値を表すための注釈tag variantです。 この場合、注釈タグ名は("return")として知られていますが、戻す型を必要とします。
そのクラスのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Docblock_Tag_Param
- extends Zend_CodeGenerator_Php_Docblock_Tag
- {
- Zend_Reflection_Docblock_Tag $reflectionTagReturn
- )
- public function setDatatype($datatype)
- public function getDatatype()
- public function generate()
- }
Zend_CodeGenerator_Php_File
Zend_CodeGenerator_Php_Fileは、 PHPコードを含むファイルの完全なコンテンツを生成することに使われます。 ファイル・レベルのdocblockと同様に必要に応じて、 ファイルはクラスまたは任意のPHPコードを含むかもしれません。
クラスをファイルに加えるとき、 Zend_CodeGenerator_Php_Classコンストラクタに渡す情報の配列か、 そのクラスのインスタンスのどちらかを渡す必要があります。 同様にdocblockで、Zend_CodeGenerator_Php_Docblockコンストラクタが消費する情報、 またはクラスのインスタンスを渡す必要があります。
そのクラスのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
- {
- $filePath,
- $usePreviousCodeGeneratorIfItExists = true,
- $includeIfNotAlreadyIncluded = true)
- public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
- public function getDocblock()
- public function setRequiredFiles($requiredFiles)
- public function getRequiredFiles()
- public function getClass($name = null)
- public function setClass($class)
- public function setFilename($filename)
- public function getFilename()
- public function getClasses()
- public function setBody($body)
- public function getBody()
- public function isSourceDirty()
- public function generate()
- }
Zend_CodeGenerator_Php_Member_Container
Zend_CodeGenerator_Php_Member_Containerは、 Zend_CodeGenerator_Php_Classによって、 内部的にクラスのメンバー - プロパティやメソッドなど - の経過を追う目的に使われます。
そのクラスのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
- {
- public function __construct($type = self::TYPE_PROPERTY)
- }
Zend_CodeGenerator_Php_Method
Zend_CodeGenerator_Php_Methodは、 クラス・メソッドを記述して、 メソッドのためにコードとdocblockを生成できます。 その親クラス、Zend_CodeGenerator_Php_Member_Abstractの通りに、 static、abstractまたはfinalとしての可視性と状態が指示されるかもしれません。 最後に、メソッドのパラメータと戻り値は、指定されるかもしれません。
パラメータは setParameter()または setParameters()を用いて設定されるかもしれません。 それぞれの場合、パラメータはZend_CodeGenerator_Php_Parameterコンストラクタに渡す情報の配列か、 またはそのクラスのインスタンスでなければいけません。
そのクラスのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Method
- extends Zend_CodeGenerator_Php_Member_Abstract
- {
- Zend_Reflection_Method $reflectionMethod
- )
- public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
- public function getDocblock()
- public function setFinal($isFinal)
- public function setParameter($parameter)
- public function getParameters()
- public function setBody($body)
- public function getBody()
- public function generate()
- }
Zend_CodeGenerator_Php_Parameter
Zend_CodeGenerator_Php_Parameterは、 メソッドのパラメータを指定することに使われるかもしれません。 各々のパラメータは、位置やデフォルト値、データ型を持つかもしれません; パラメータ名は必須です。 位置がもし明確でなければ、それらがメソッドで記載された順序が使われます。
そのクラスのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
- {
- Zend_Reflection_Parameter $reflectionParameter
- )
- public function setName($name)
- public function getName()
- public function setDefaultValue($defaultValue)
- public function getDefaultValue()
- public function setPosition($position)
- public function getPosition()
- public function getPassedByReference()
- public function setPassedByReference($passedByReference)
- public function generate()
- }
既定値として null、ブーリアンまたは配列を設定しようとすると、 いくつかの問題が起きるかもしれません。 このために、バリューホルダー・オブジェクト Zend_CodeGenerator_Php_ParameterDefaultValue を利用できます。例えば:
- $parameter = new Zend_CodeGenerator_Php_Parameter();
- $parameter->setDefaultValue(
- new Zend_CodeGenerator_Php_Parameter_DefaultValue("null")
- );
- $parameter->setDefaultValue(
- new Zend_CodeGenerator_Php_Parameter_DefaultValue("array('foo', 'bar')")
- );
内部的には setDefaultValue()も PHPで表現できない値をバリューホルダーに変換します。
Zend_CodeGenerator_Php_Property
Zend_CodeGenerator_Php_Propertyはクラスのプロパティを記述します。 それは定数か変数であるかもしれません。 どちらの場合も、プロパティには関連するデフォルト値をオプションで持つかもしれません。 さらに、親クラス(Zend_CodeGenerator_Php_Member_Abstract)を通じて 変数のプロパティの可視性が設定されるかもしれません。
そのクラスのAPIは下記の通りです。:
- class Zend_CodeGenerator_Php_Property
- extends Zend_CodeGenerator_Php_Member_Abstract
- {
- Zend_Reflection_Property $reflectionProperty
- )
- public function setConst($const)
- public function isConst()
- public function setDefaultValue($defaultValue)
- public function getDefaultValue()
- public function generate()
- }
| Zend_CodeGeneratorサンプル |
