Programmer's Reference Guide

Zend_CodeGeneratorサンプル

Zend_CodeGeneratorリファレンス

抽象クラスとインターフェース

Zend_CodeGenerator_Abstract

すべてのCodeGeneratorクラスが継承する基底のクラスは、 必要な最小限の機能性を提供します。 そのAPIは下記の通りです。:

  1. abstract class Zend_CodeGenerator_Abstract
  2. {
  3.     final public function __construct(Array $options = array())
  4.     public function setOptions(Array $options)
  5.     public function setSourceContent($sourceContent)
  6.     public function getSourceContent()
  7.     protected function _init()
  8.     protected function _prepare()
  9.     abstract public function generate();
  10.     final public function __toString()
  11. }

コンストラクタは最初に _init()を呼び出します。 (それは、具体的に拡張するクラスを実装するために空のままにされます) それから setOptions()$optionsパラメータを渡し、 最後に _prepare()を呼び出します。 (again, クラスの拡張によって実装されます。)

Zend Frameworkのほとんどのクラスのように、 setOptions()ではクラスの既存のセッターへのオプション・キーを比較して、 見つかったら、メソッドに値を渡します。

__toString()は最後に指定され、 generate()の代わりをします。

setSourceContent()及び getSourceContent()は デフォルト・コンテンツを生成されたコードに設定するか、 一旦すべての生成作業が完了した前述のコンテンツと入れ替えることを目的とします。

Zend_CodeGenerator_Php_Abstract

Zend_CodeGenerator_Php_AbstractZend_CodeGenerator_Abstractを拡張し、 生成されたコンテンツの前に現れなければならないインデントの量だけでなく、 コンテンツが変わったかどうか追跡するための若干のプロパティも加えます。 そのAPIは下記の通りです。:

  1. abstract class Zend_CodeGenerator_Php_Abstract
  2.     extends Zend_CodeGenerator_Abstract
  3. {
  4.     public function setSourceDirty($isSourceDirty = true)
  5.     public function isSourceDirty()
  6.     public function setIndentation($indentation)
  7.     public function getIndentation()
  8. }

Zend_CodeGenerator_Php_Member_Abstract

Zend_CodeGenerator_Php_Member_Abstractは クラスのメンバー - プロパティとメソッド - を生成するための基底クラスで、 可視性を確立するためのアクセッサとミューテータを提供します; メンバーやメンバー名がabstract、staticまたはfinalのいずれにせよ。 そのAPIは下記の通りです。:

  1. abstract class Zend_CodeGenerator_Php_Member_Abstract
  2.     extends Zend_CodeGenerator_Php_Abstract
  3. {
  4.     public function setAbstract($isAbstract)
  5.     public function isAbstract()
  6.     public function setStatic($isStatic)
  7.     public function isStatic()
  8.     public function setVisibility($visibility)
  9.     public function getVisibility()
  10.     public function setName($name)
  11.     public function getName()
  12. }

Concrete CodeGenerator Classes

Zend_CodeGenerator_Php_Body

Zend_CodeGenerator_Php_Bodyは、 ファイルの中に含む任意の手続き的なコードを生成することを目的とします。 そのように、単にコンテンツをオブジェクトに設定し、 generate()を実施すると、それはそのコンテンツを返します。

そのクラスのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_Body extends Zend_CodeGenerator_Php_Abstract
  2. {
  3.     public function setContent($content)
  4.     public function getContent()
  5.     public function generate()
  6. }

Zend_CodeGenerator_Php_Class

Zend_CodeGenerator_Php_Classは、 PHPクラスを生成することを目的とします。 基本的機能ではPHPクラスそのものを生成し、 また、任意で関連したPHP DocBlockも生成します。 クラスは他のクラスを実装するかもしれませんし、継承するかもしれません。 またはabstractと指定されるかもしれません。 他のコード・ジェネレーター・クラスを利用して、 クラスの定数やプロパティ、メソッドを付与することもできます。

そのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_Class extends Zend_CodeGenerator_Php_Abstract
  2. {
  3.     public static function fromReflection(
  4.         Zend_Reflection_Class $reflectionClass
  5.     )
  6.     public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  7.     public function getDocblock()
  8.     public function setName($name)
  9.     public function getName()
  10.     public function setAbstract($isAbstract)
  11.     public function isAbstract()
  12.     public function setExtendedClass($extendedClass)
  13.     public function getExtendedClass()
  14.     public function setImplementedInterfaces(Array $implementedInterfaces)
  15.     public function getImplementedInterfaces()
  16.     public function setProperties(Array $properties)
  17.     public function setProperty($property)
  18.     public function getProperties()
  19.     public function getProperty($propertyName)
  20.     public function setMethods(Array $methods)
  21.     public function setMethod($method)
  22.     public function getMethods()
  23.     public function getMethod($methodName)
  24.     public function hasMethod($methodName)
  25.     public function isSourceDirty()
  26.     public function generate()
  27. }

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は下記の通りです。:

  1. class Zend_CodeGenerator_Php_Docblock extends Zend_CodeGenerator_Php_Abstract
  2. {
  3.     public static function fromReflection(
  4.         Zend_Reflection_Docblock $reflectionDocblock
  5.     )
  6.     public function setShortDescription($shortDescription)
  7.     public function getShortDescription()
  8.     public function setLongDescription($longDescription)
  9.     public function getLongDescription()
  10.     public function setTags(Array $tags)
  11.     public function setTag($tag)
  12.     public function getTags()
  13.     public function generate()
  14. }

Zend_CodeGenerator_Php_Docblock_Tag

Zend_CodeGenerator_Php_Docblock_Tagは、 PHP docblockに含む任意の注釈タグを作成することを目的とします。 タグは、名前(@記号にすぐ続く部分)と説明(タグ名に続いているすべて)を含むことになっています。

そのクラスのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_Docblock_Tag
  2.     extends Zend_CodeGenerator_Php_Abstract
  3. {
  4.     public static function fromReflection(
  5.         Zend_Reflection_Docblock_Tag $reflectionTag
  6.     )
  7.     public function setName($name)
  8.     public function getName()
  9.     public function setDescription($description)
  10.     public function getDescription()
  11.     public function generate()
  12. }

Zend_CodeGenerator_Php_DocBlock_Tag_Param

Zend_CodeGenerator_Php_DocBlock_Tag_ParamZend_CodeGenerator_Php_DocBlock_Tagの分化したバージョンで、 メソッド・パラメータを表します。 そこで、タグ名は("param")として知られています、 しかし、この注釈タグを構成するパラメータ名とデータ型を生成するために、 追加の情報が必要とされます。

そのクラスのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  2.     extends Zend_CodeGenerator_Php_Docblock_Tag
  3. {
  4.     public static function fromReflection(
  5.         Zend_Reflection_Docblock_Tag $reflectionTagParam
  6.     )
  7.     public function setDatatype($datatype)
  8.     public function getDatatype()
  9.     public function setParamName($paramName)
  10.     public function getParamName()
  11.     public function generate()
  12. }

Zend_CodeGenerator_Php_DocBlock_Tag_Return

param docblock tag variantのように、 Zend_CodeGenerator_Php_Docblock_Tab_Returnは メソッドの戻り値を表すための注釈tag variantです。 この場合、注釈タグ名は("return")として知られていますが、戻す型を必要とします。

そのクラスのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  2.     extends Zend_CodeGenerator_Php_Docblock_Tag
  3. {
  4.     public static function fromReflection(
  5.         Zend_Reflection_Docblock_Tag $reflectionTagReturn
  6.     )
  7.     public function setDatatype($datatype)
  8.     public function getDatatype()
  9.     public function generate()
  10. }

Zend_CodeGenerator_Php_File

Zend_CodeGenerator_Php_Fileは、 PHPコードを含むファイルの完全なコンテンツを生成することに使われます。 ファイル・レベルのdocblockと同様に必要に応じて、 ファイルはクラスまたは任意のPHPコードを含むかもしれません。

クラスをファイルに加えるとき、 Zend_CodeGenerator_Php_Classコンストラクタに渡す情報の配列か、 そのクラスのインスタンスのどちらかを渡す必要があります。 同様にdocblockで、Zend_CodeGenerator_Php_Docblockコンストラクタが消費する情報、 またはクラスのインスタンスを渡す必要があります。

そのクラスのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
  2. {
  3.     public static function fromReflectedFilePath(
  4.         $filePath,
  5.         $usePreviousCodeGeneratorIfItExists = true,
  6.         $includeIfNotAlreadyIncluded = true)
  7.     public static function fromReflection(Zend_Reflection_File $reflectionFile)
  8.     public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  9.     public function getDocblock()
  10.     public function setRequiredFiles($requiredFiles)
  11.     public function getRequiredFiles()
  12.     public function setClasses(Array $classes)
  13.     public function getClass($name = null)
  14.     public function setClass($class)
  15.     public function setFilename($filename)
  16.     public function getFilename()
  17.     public function getClasses()
  18.     public function setBody($body)
  19.     public function getBody()
  20.     public function isSourceDirty()
  21.     public function generate()
  22. }

Zend_CodeGenerator_Php_Member_Container

Zend_CodeGenerator_Php_Member_Containerは、 Zend_CodeGenerator_Php_Classによって、 内部的にクラスのメンバー - プロパティやメソッドなど - の経過を追う目的に使われます。

そのクラスのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
  2. {
  3.     public function __construct($type = self::TYPE_PROPERTY)
  4. }

Zend_CodeGenerator_Php_Method

Zend_CodeGenerator_Php_Methodは、 クラス・メソッドを記述して、 メソッドのためにコードとdocblockを生成することができます。 その親クラス、Zend_CodeGenerator_Php_Member_Abstractの通りに、 static、abstractまたはfinalとしての可視性と状態が指示されるかもしれません。 最後に、メソッドのパラメータと戻り値は、指定されるかもしれません。

パラメータは setParameter()または setParameters()を用いて設定されるかもしれません。 それぞれの場合、パラメータはZend_CodeGenerator_Php_Parameterコンストラクタに渡す情報の配列か、 またはそのクラスのインスタンスでなければいけません。

そのクラスのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_Method
  2.     extends Zend_CodeGenerator_Php_Member_Abstract
  3. {
  4.     public static function fromReflection(
  5.         Zend_Reflection_Method $reflectionMethod
  6.     )
  7.     public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  8.     public function getDocblock()
  9.     public function setFinal($isFinal)
  10.     public function setParameters(Array $parameters)
  11.     public function setParameter($parameter)
  12.     public function getParameters()
  13.     public function setBody($body)
  14.     public function getBody()
  15.     public function generate()
  16. }

Zend_CodeGenerator_Php_Parameter

Zend_CodeGenerator_Php_Parameterは、 メソッドのパラメータを指定することに使われるかもしれません。 各々のパラメータは、位置やデフォルト値、データ型を持つかもしれません; パラメータ名は必須です。 位置がもし明確でなければ、それらがメソッドで記載された順序が使われます。

そのクラスのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
  2. {
  3.     public static function fromReflection(
  4.         Zend_Reflection_Parameter $reflectionParameter
  5.     )
  6.     public function setType($type)
  7.     public function getType()
  8.     public function setName($name)
  9.     public function getName()
  10.     public function setDefaultValue($defaultValue)
  11.     public function getDefaultValue()
  12.     public function setPosition($position)
  13.     public function getPosition()
  14.     public function generate()
  15. }

Zend_CodeGenerator_Php_Property

Zend_CodeGenerator_Php_Propertyはクラスのプロパティを記述します。 それは定数か変数であるかもしれません。 どちらの場合も、プロパティには関連するデフォルト値をオプションで持つかもしれません。 さらに、親クラス(Zend_CodeGenerator_Php_Member_Abstract)を通じて 変数のプロパティの可視性が設定されるかもしれません。

そのクラスのAPIは下記の通りです。:

  1. class Zend_CodeGenerator_Php_Property
  2.     extends Zend_CodeGenerator_Php_Member_Abstract
  3. {
  4.     public static function fromReflection(
  5.         Zend_Reflection_Property $reflectionProperty
  6.     )
  7.     public function setConst($const)
  8.     public function isConst()
  9.     public function setDefaultValue($defaultValue)
  10.     public function getDefaultValue()
  11.     public function generate()
  12. }

Zend_CodeGeneratorサンプル
blog comments powered by Disqus

Select a Version

Languages Available

Components

Search the Manual