Zend_Tool超入門
 Introduction to Zend_Tool


      Zend Framework meetings(in Japan)#2 - March 6, 2010
Who are you?                     My Talks about ZF


➢
 
       sasezaki
➢
    I'm not PHP'er !?
➢
 creating.. Spidering PHP
Library - “Diggin”.
http://diggin.musicrider.com/




                Web::Collector
                のZFのポート
                の話もしてます
Zend_Tool ZF1.10以上の話
What is Zend_Tool ?
Zend_Toolとは、Zend Framework用コマンドラインツール
そもそも、Zend_Console_Getoptの作者であり、ZF1.8より前のリードメンテナー Wil Sinclair(最近
lithuimに参画しましたけどなんか話題になってませんね!!!1)が、Zend_Consoleとしてコマンドライ
ンツールが作成が開始されたもののリリースにはいたらず、Zend_DbのリードRalph Schindler
がメインメンテナーとして、Zend_Toolというコンポーネントとして作成されました。プロポーザル期
のwikiのページをに載ってたと思いますが、symfonyやcakephpそれにdjangoなどのフレームワー
クを研究(? 使ってみただけ感はあるけど)して開発に取り組んでるんですよね。もちろんRalphだ
けじゃなく今や  Doctrine
                コミッターになったbeberleiなどのちゃちゃ入れも入ってたりします。
初期のバージョンであるZF1.6はlaboratoryに付属しはじめ、うっかり初期のものに手をだしちゃっ
た、phpcredits()の一人でPHPセキュリティーでも知られる   yohgakiさんをちょっと
苦しめた不安定さがあったものの、まあさすがに1.10にもなると、安定・・(あ、またバグっ
              長いので略。
ぽいものが!)、てまたtrunkに追加されとるやんかー。というZFには珍しく?未だにバージョンアッ
プをしてる恐ろしいコンポーネント。ラルフのスライド
http://www.slideshare.net/ralphschindler/extending-zendtool
では、Rapid application developmentの文字が踊ってたりしますが、ご存知のとおりZF1.10より前
ではインクルードパス総読みしまってて、型落ちしたパソコンでコマンドを走らせると来ない2,3分
レスポンスが帰って    ナウでヤングな            コンピューター以外を相手にしない、どこが
Rapidやねんとつっこみたくなる遅さがありましたが、ZF1.10ではBase Loaderが導入されてまあま
あ遅くはないかなあという感じになりました。1.10では搭載されたシステムプロパイダーの数も増
えてぐぐっと増えて、使える(canじゃなくてuseful)感じになってきたかなあと思います。まあ、create
系のコマンドばっかりですが。。。ソース内部をご覧になれば分かるとおり、Zend_Tool内部で
Tooling Frameworkというコントローラっぽい何かがリクエストからdispatchするという形式をとって
おり、CLIにもGTKにも対応してるのはZend_Controllerだけ!(○○先生の作品が読めるのはジャ
ンプだけ風)と思っていたZFユーザを一瞬へなへなさせる疎結合っぷりだったりしますが、
zfコマンドのグローバルオプション

    Usage:
      zf [--global-opts] action-name [--action-opts] provider-name [--provider-opts] [provider parameters ...]
      Note: You may use "?" in any place of the above usage string to ask for more specific help information.
      Example: "zf ? version" will list all available actions for the version provider.




ヘルプの表示
●


            $zf --help
            ↓(e.g.)
            $zf --help show version
zfコマンド用(ツーリングクライアント)のセットアップ
●
(以下のはオプションについてはzf.phpにコーディングされている。)

            $zf --info
            $zf --setup
プロパイダーによるコマンドの利用

マニフェスト一覧の取得
          コマンド全ての詳細を知りたい場合に利用

      $zf show manifest

zfのヴァージョンが1系統か2系統か知りたい!しかも表示す
るときは名前は表示しないで欲しい!そんな時は・・ (ないがな)
・


    $zf show version.major-part -n 0

               参考
               manual/ja/zend.tool.usage.cli.html
               http://d.hatena.ne.jp/noopable/20100113/1263395986
               http://codezine.jp/article/detail/4489
プロパイダーを作る・利用可能にする(1)

 $zf say hello --name wozozo

            provider
   action
                       引数
                       内部でZend_Console_Getoptを利用
プロパイダーを作る・利用可能にする(2)
コンフィグファイル(.zf.ini)を作成していない場合以下のコマン
ドにて作成

$zf --setup config-file


コンフィグに作成したプロパイダーを追加

$zf enable config.provider             My_Component_HelloProvider




 コンフィグファイルに
 basicloader.classes.0 = "My_Component_Provider"
 という形式で追加される。
プロパイダーを作る・利用可能にする(3)
  Hello World以外のプロパイダーの作成




 Zend_Applicationと
 Zend_Cache_Managerによる
 $zf clear cache
 $zf clean cache
 の作成(ネタ)
プロパイダーを作る・利用可能にする(4)
ZF 1.10ではアプリケーション用のテンプレート構
成とCache群を扱うZend_Cache_Managerが同梱。


また、このManagerを利用する
Zend_Application_Resource_Cachemanager
がついてきます!

つまりCacheを一連して操作するコマンドも作れる
という図式(ただし、Zend_Application利用してる場合に限る)
※ Zend_Cache_Managerについては未翻訳ですので翻訳してい
ただける方を求めています!
翻訳については http://d.hatena.ne.jp/satoruyoshida/20100130/1264859250
プロパイダーを作る・利用可能にする(5)




     特定のプロジェクトディレクトリ下でのみ特定のプロ
     パイダーを読み込ませる場合の
     おばあちゃんの知恵袋的対応
 Zend_Application利用のプロパイダー(てきとーなサンプル)
 ※ まっとうな方法はnoopableさんがきっとやってます!
 Actionについては省略します。(specialitiesやpretendなどを組み合わせて細かいことができます)
…ということでプロパイダーの完成
映像特典
 (おまけ)
「Zend Frameworkはフレームワークを
作るためのフレームワークだからコマンドライ
ンツールだってオレオレコマンド名で作りた
い!!!!」

                  ・・・ですよね!?


しかし、
1.10のZFクラスならびにZend_Tool_Frameworkでは
”zf”コマンド名が直書き…
悲しいですね。
↓
そんな貴方のためにzfコマンドの拡張をご用意しました。
詳しくはWebで
http://github.com/sasezaki/Diggin_Tool

"More" Introduction to Zend Tool