Zend_CodeGeneratorリファレンス
抽象クラスとインターフェース
Zend_CodeGenerator_Abstract
すべてのCodeGeneratorクラスが継承する基底のクラスは、
必要な最小限の機能性を提供します。
そのAPIは下記の通りです。:
コンストラクタは最初に_init()を呼び出します。
(それは、具体的に拡張するクラスを実装するために空のままにされます)
それからsetOptions()に$optionsパラメータを渡し、
最後に_prepare()を呼び出します。
(again,
クラスの拡張によって実装されます。)
Zend Frameworkのほとんどのクラスのように、
setOptions()ではクラスの既存のセッターへのオプション・キーを比較して、
見つかったら、メソッドに値を渡します。
__toString()は最後に指定され、
generate()の代わりをします。
setSourceContent()及びgetSourceContent()は
デフォルト・コンテンツを生成されたコードに設定するか、
一旦すべての生成作業が完了した前述のコンテンツと入れ替えることを目的とします。
Zend_CodeGenerator_Php_Abstract
Zend_CodeGenerator_Php_Abstractは
Zend_CodeGenerator_Abstractを拡張し、
生成されたコンテンツの前に現れなければならないインデントの量だけでなく、
コンテンツが変わったかどうか追跡するための若干のプロパティも加えます。
そのAPIは下記の通りです。:
Zend_CodeGenerator_Php_Member_Abstract
Zend_CodeGenerator_Php_Member_Abstractは
クラスのメンバー - プロパティとメソッド - を生成するための基底クラスで、
可視性を確立するためのアクセッサとミューテータを提供します;
メンバーやメンバー名がabstract、staticまたはfinalのいずれにせよ。
そのAPIは下記の通りです。:
Concrete CodeGenerator Classes
Zend_CodeGenerator_Php_Body
Zend_CodeGenerator_Php_Bodyは、
ファイルの中に含む任意の手続き的なコードを生成することを目的とします。
そのように、単にコンテンツをオブジェクトに設定し、
generate()を実施すると、それはそのコンテンツを返します。
そのクラスのAPIは下記の通りです。:
Zend_CodeGenerator_Php_Class
Zend_CodeGenerator_Php_Classは、
PHPクラスを生成することを目的とします。
基本的機能ではPHPクラスそのものを生成し、
また、任意で関連したPHP DocBlockも生成します。
クラスは他のクラスを実装するかもしれませんし、継承するかもしれません。
またはabstractと指定されるかもしれません。
他のコード・ジェネレーター・クラスを利用して、
クラスの定数やプロパティ、メソッドを付与することもできます。
そのAPIは下記の通りです。:
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は下記の通りです。:
Zend_CodeGenerator_Php_Docblock_Tag
Zend_CodeGenerator_Php_Docblock_Tagは、
PHP docblockに含む任意の注釈タグを作成することを目的とします。
タグは、名前(@記号にすぐ続く部分)と説明(タグ名に続いているすべて)を含むことになっています。
そのクラスのAPIは下記の通りです。:
Zend_CodeGenerator_Php_DocBlock_Tag_Param
Zend_CodeGenerator_Php_DocBlock_Tag_Paramは
Zend_CodeGenerator_Php_DocBlock_Tagの分化したバージョンで、
メソッド・パラメータを表します。
そこで、タグ名は("param")として知られています、
しかし、この注釈タグを構成するパラメータ名とデータ型を生成するために、
追加の情報が必要とされます。
そのクラスのAPIは下記の通りです。:
Zend_CodeGenerator_Php_DocBlock_Tag_Return
param docblock tag variantのように、
Zend_CodeGenerator_Php_Docblock_Tab_Returnは
メソッドの戻り値を表すための注釈tag variantです。
この場合、注釈タグ名は("return")として知られていますが、戻す型を必要とします。
そのクラスのAPIは下記の通りです。:
Zend_CodeGenerator_Php_File
Zend_CodeGenerator_Php_Fileは、
PHPコードを含むファイルの完全なコンテンツを生成することに使われます。
ファイル・レベルのdocblockと同様に必要に応じて、
ファイルはクラスまたは任意のPHPコードを含むかもしれません。
クラスをファイルに加えるとき、
Zend_CodeGenerator_Php_Classコンストラクタに渡す情報の配列か、
そのクラスのインスタンスのどちらかを渡す必要があります。
同様にdocblockで、Zend_CodeGenerator_Php_Docblockコンストラクタが消費する情報、
またはクラスのインスタンスを渡す必要があります。
そのクラスのAPIは下記の通りです。:
Zend_CodeGenerator_Php_Member_Container
Zend_CodeGenerator_Php_Member_Containerは、
Zend_CodeGenerator_Php_Classによって、
内部的にクラスのメンバー - プロパティやメソッドなど - の経過を追う目的に使われます。
そのクラスのAPIは下記の通りです。:
Zend_CodeGenerator_Php_Method
Zend_CodeGenerator_Php_Methodは、
クラス・メソッドを記述して、
メソッドのためにコードとdocblockを生成できます。
その親クラス、Zend_CodeGenerator_Php_Member_Abstractの通りに、
static、abstractまたはfinalとしての可視性と状態が指示されるかもしれません。
最後に、メソッドのパラメータと戻り値は、指定されるかもしれません。
パラメータはsetParameter()またはsetParameters()を用いて設定されるかもしれません。
それぞれの場合、パラメータはZend_CodeGenerator_Php_Parameterコンストラクタに渡す情報の配列か、
またはそのクラスのインスタンスでなければいけません。
そのクラスのAPIは下記の通りです。:
Zend_CodeGenerator_Php_Parameter
Zend_CodeGenerator_Php_Parameterは、
メソッドのパラメータを指定することに使われるかもしれません。
各々のパラメータは、位置やデフォルト値、データ型を持つかもしれません;
パラメータ名は必須です。
位置がもし明確でなければ、それらがメソッドで記載された順序が使われます。
そのクラスのAPIは下記の通りです。:
既定値として null、ブーリアンまたは配列を設定しようとすると、
いくつかの問題が起きるかもしれません。
このために、バリューホルダー・オブジェクト
Zend_CodeGenerator_Php_ParameterDefaultValue
を利用できます。例えば:
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は下記の通りです。: