Zend_Reflectionリファレンス
Zend_Reflectionの様々なクラスは、
PHPのReflection APIのAPIに良く似ています。
しかし、一つ重要な違いがあります。
PHPのReflection APIはdocblock注釈タグの内部、パラメータ変数の型も返す型も、
参照することができません。
Zend_Reflectionは、
パラメーター変数の型や返す型を判断するために、
メソッドのdocblock注釈を解析します。
特に@param及び@return注釈が使われます。
しかしながら、"短い"説明や"長い"説明ばかりではなく、
その他の注釈タグも検査できます。
Zend_ReflectionのそれぞれのReflectionオブジェクトは、
Zend_Reflection_Docblockのインスタンスを返すように、
getDocblock()を上書きします。
このクラスはdocblock及び注釈タグを参照できるようにします。
Zend_Reflection_FileはPHPファイルの内部を参照できる新しいReflectionクラスです。
それを使って、PHPファイルに含まれるクラスや関数、グローバルなPHPコードを取得できます。
最後に、その他のReflectionオブジェクトを返す様々なメソッドにおいて、
2番目の引数としてクラス名を、
返されたReflectionオブジェクトで使用できます。
Zend_Reflection_Docblock
Zend_Reflection_Docblockは
PHPのReflection API以上にZend_Reflectionに価値を付与する心臓部です。
それには下記のメソッドがあります:
getContents(): docblockの完全な内容を返します
getStartLine(): 定義されたファイル内での
docblock開始位置を返します
getEndLine(): 定義されたファイル内での
docblock終了行を返します
getShortDescription(): 短い、一行の説明を取得します
(たいていはdocblockの最初の行)
getLongDescription(): docblockの長い説明を取得します
hasTag($name): 与えられた注釈タグが
docblockにあるかどうか判断します
getTag($name): 与えられた注釈タグのReflectionオブジェクト、
または存在しない場合FALSEを返します
getTags($filter): 全てのタグ、
または与えられた$filter文字列に一致する全てのタグを取得します。
タグはZend_Reflection_Docblock_Tagオブジェクトの配列として返されます。
Zend_Reflection_Docblock_Tag
Zend_Reflection_Docblock_Tagは個別の注釈タグのためのReflectionを提供します。
ほとんどのタグは名前と説明から構成されています。
いくつかの特別なタグの場合には、
適切なクラスのインスタンスを取得するための、
ファクトリーメソッドをクラスで提供します。
下記のメソッドはZend_Reflection_Docblock_Tagのために定義されています:
factory($tagDocblockLine): 注釈タグReflectionクラスをインスタンス化して返します。
getName(): 注釈タグの名前を返します
getDescription(): 注釈の説明を返します
Zend_Reflection_Docblock_Tag_Param
Zend_Reflection_Docblock_Tag_Paramは
Zend_Reflection_Docblock_Tagの特化したバージョンです。
@param注釈タグの説明はパラメータの型及び変数名、変数の説明から構成されています。
このクラスにより下記のメソッドがZend_Reflection_Docblock_Tagに追加されます:
getType(): パラメータ変数の型を返します
getVariableName(): パラメータ変数の名前を返します
Zend_Reflection_Docblock_Tag_Return
Zend_Reflection_Docblock_Tag_Paramのように、
Zend_Reflection_Docblock_Tag_Returnは
Zend_Reflection_Docblock_Tagの特化したバージョンです。
@return注釈タグの説明は返す型及び変数の説明から構成されています。
このクラスにより下記のメソッドがZend_Reflection_Docblock_Tagに追加されます:
getType(): 戻す型を返します
Zend_Reflection_File
Zend_Reflection_FileによりPHPファイル内部を参照できます。
それを使って、ファイルで定義されたクラスや関数、生のPHPコードを参照できます。
下記の関数が定義されています:
getFileName(): Reflectionを使用したファイルの名前を取得します
getStartLine(): ファイルの開始行を返します(常に1)
getEndLine() 最終行、ファイル中の行数を取得します
getDocComment($reflectionClass =
'Zend_Reflection_Docblock'): ファイルレベルのdocblock Reflectionオブジェクトを取得します
getClasses($reflectionClass =
'Zend_Reflection_Class'): Reflectionオブジェクトの配列を取得します。
ファイルに定義されているそれぞれのクラスです。
getFunctions($reflectionClass =
'Zend_Reflection_Function'): Reflectionオブジェクトの配列を取得します。
ファイルに定義されているそれぞれの関数です。
getClass($name = null, $reflectionClass =
'Zend_Reflection_Class'): 一つのクラスのReflectionオブジェクトの配列を取得します
getContents(): ファイルの全てのコンテンツを取得します。
Zend_Reflection_Class
Zend_Reflection_ClassはReflectionClassを拡張して、
そのAPIに追随します。
ひとつ追加のメソッド、getDeclaringFile()を追加します。
それは定義されたファイルでのZend_Reflection_File Reflectionオブジェクトを
取得するために使われるでしょう。
さらに、下記のメソッドはReflectionオブジェクトを取り出すときに使う
Reflectionクラスを指定する際に追加の変数を加えます。:
getDeclaringFile($reflectionClass = 'Zend_Reflection_File')
getDocblock($reflectionClass = 'Zend_Reflection_Docblock')
getInterfaces($reflectionClass = 'Zend_Reflection_Class')
getMethod($reflectionClass = 'Zend_Reflection_Method')
getMethods($filter = -1, $reflectionClass = 'Zend_Reflection_Method')
getParentClass($reflectionClass = 'Zend_Reflection_Class')
getProperty($name, $reflectionClass =
'Zend_Reflection_Property')
getProperties($filter = -1, $reflectionClass =
'Zend_Reflection_Property')
Zend_Reflection_Extension
Zend_Reflection_ExtensionはReflectionExtensionを拡張して、
そのAPIに追随します。
それはReflectionオブジェクトを取り出すときに使う
Reflectionクラスを指定する際に追加の変数を加えて、
下記のメソッドを上書きします。
getFunctions($reflectionClass =
'Zend_Reflection_Function'): エクステンションで定義された関数を
示す配列を取得します。
getClasses($reflectionClass =
'Zend_Reflection_Class'): エクステンションで定義されたクラスを
示す配列を取得します。
Zend_Reflection_Function
Zend_Reflection_Functionは、
返されたReflectionを使ってReflectionクラスを指定できるように、
いくつかのメソッドを上書きするばかりではなく、
関数の返り値を取得するメソッドを追加します。
getDocblock($reflectionClass =
'Zend_Reflection_Docblock'): 関数docblockの
Reflectionオブジェクトを取得します
getParameters($reflectionClass =
'Zend_Reflection_Parameter'): 関数のパラメータ
Reflectionオブジェクト全ての配列を取得します
getReturn(): 戻す型のReflectionオブジェクトを取得します
Zend_Reflection_Method
Zend_Reflection_MethodはZend_Reflection_Functionを継承して、
追加のメソッドを1つだけ上書きします:
getParentClass($reflectionClass =
'Zend_Reflection_Class'): 親クラスのReflectionオブジェクトを取得します
Zend_Reflection_Parameter
Zend_Reflection_Parameterは
戻されたReflectionオブジェクトで
Reflectionを使えるようにする上書きメソッドばかりではなく、
パラメータの型を取得するメソッドを追加します。
getDeclaringClass($reflectionClass =
'Zend_Reflection_Class'): もし可能ならば、
Reflectionオブジェクトとしてパラメータの宣言クラスを取得します。
getClass($reflectionClass =
'Zend_Reflection_Class'): もし可能ならば、
Reflectionオブジェクトとしてパラメータのクラスを取得します。
getDeclaringFunction($reflectionClass =
'Zend_Reflection_Function'): もし可能ならば、
Reflectionオブジェクトとしてパラメータの関数を取得します。
getType(): パラメータの型を取得します
Zend_Reflection_Property
Zend_Reflection_Propertyは、
戻されたReflectionオブジェクトクラスを指定するための、
メソッドを1つ上書きします。:
getDeclaringClass($reflectionClass =
'Zend_Reflection_Class'): Reflectionオブジェクトとして
プロパティーの宣言クラスを取得します