Zend_Tool_Frameworkを利用してプロバイダを作成する
一般的に、プロバイダそれ自体は、
コマンドラインでクライアント(またはそれ以外)をディスパッチすることを求めるいくらかの能力をバンドルするための、
開発者のためのシェル以外の何物でもありません。
MVCアプリケーションの中での「コントローラ」と似ています。
プロバイダを作成するための基本命令
例えば、サード・パーティのコンポーネントが働かせる
データファイルのバージョンを示す能力を開発者が加えたければ、
開発者が実装する必要があるクラスが1つだけあります。
もしコンポーネントがMy_Componentと呼ばれるなら、
include_path上のどこかにHelloProvider.phpという名前のファイルで
My_Component_HelloProviderという名のクラスを作成するでしょう。
このクラスはZend_Tool_Framework_Provider_Interfaceを実装します、
そして、このファイルの本体は以下のように見えなければならないだけです:
上記のコードが与えられて、
コンソール・クライアントを通じて開発者がこの機能にアクセスしたけれ、
呼び出しはこのように見えるでしょう:
先進の開発情報
上記の例の "Hello World" は、単純なコマンドとして有名です、
しかし、より進んだ何かについてはどうでしょうか?
スクリプトを書くこととツーリングの必要性が高まるにつれ、
変数を扱う能力を必要とすると気付くかもしれません。
だいたいのファンクション・シグニチャにはパラメータがあるように、
ツーリング・リクエストはパラメータを受け入れることもできます。
各々のツーリング・リクエストがクラス内でメソッドに分離されることができると、
ツーリング・リクエストのパラメータはきわめて周知の立場で分離されることもできます。
プロバイダのアクション・メソッドのパラメータは、
クライアントがそのプロバイダとアクションの組合せを呼ぶとき、
利用することを望む同じパラメータを含むことができます。
たとえば、あなたが上記の例で名前を扱いたいならば、
あなたは多分オブジェクト指向コードでこうするでしょう:
それから上記の例は、コマンドラインzf say hello Joeによって呼ぶことができます。
"Joe" は、メソッド呼び出しのパラメータとして、プロバイダに供給されます。
また注意すべきこととして、
パラメータが任意だとあなたがわかるように、
zf say helloがさらに機能して、名前 "Ralph" にデフォルト設定するように、
コマンドライン上で選択できることを意味します。
あなたが実装したいかもしれないもう一つの面白い特徴は、pretendabilityです。
Pretendabilty は、
まるでそれがリクエストされたアクションとプロバイダの組み合わせを実行しているようなふりをして、
実際にそれを実行せずに、それが実行するであろうことについて沢山の情報をユーザーに与えることが
プロバイダにできるようにします。
これ以外の場合にはユーザーが実行したくないかもしれない重いデータベースや、
ファイルシステム修正をするときに重要な小道具であるかもしれません。
Pretendability は簡単に実装できます。
このフィーチャーには2つの要素があります:
1) プロバイダが「ふりをする」能力を持つことを示します。
2) 現在のリクエストが本当に、
「ふりをする」よう要求されたことを確実にするために、リクエストをチェックします。
このフィーチャーは下記のコードサンプルで示されます。
_registry->getRequest()->isPretend()) {
echo 'I would say hello to ' . $name . '.';
} else {
echo 'Hello' . $name . ', from my provider!';
}
}
}
]]>