Upload
sasezaki
View
1.722
Download
4
Embed Size (px)
Citation preview
Zend_Tool超入門
Introduction to Zend_Tool
Zend Framework meetings(in Japan)#2 - March 6, 2010
Who are you?
➢ sasezaki
➢I'm not PHP'er !?
➢creating.. Spidering PHP Library - “Diggin”.http://diggin.musicrider.com/
My Talks about ZF
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 --info$zf --setup
$zf --help↓(e.g.)$zf --help show version
zfコマンドのグローバルオプション
●ヘルプの表示
●zfコマンド用(ツーリングクライアント)のセットアップ(以下のはオプションについてはzf.phpにコーディングされている。)
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 show manifest
$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
マニフェスト一覧の取得 コマンド全ての詳細を知りたい場合に利用
zfのヴァージョンが1系統か2系統か知りたい!しかも表示するときは名前は表示しないで欲しい!そんな時は・・ (ないがな)・
プロパイダーを作る・利用可能にする(1)
$zf say hello --name wozozo
actionprovider
引数内部でZend_Console_Getoptを利用
プロパイダーを作る・利用可能にする(2)
$zf enable config.provider My_Component_HelloProvider
$zf --setup config-file
コンフィグファイル(.zf.ini)を作成していない場合以下のコマンドにて作成
コンフィグに作成したプロパイダーを追加
コンフィグファイルにbasicloader.classes.0 = "My_Component_Provider"
という形式で追加される。
Hello World以外のプロパイダーの作成
プロパイダーを作る・利用可能にする(3)
Zend_ApplicationとZend_Cache_Managerによる$zf clear cache$zf clean cache の作成(ネタ)
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
プロパイダーを作る・利用可能にする(4)
プロパイダーを作る・利用可能にする(5)
特定のプロジェクトディレクトリ下でのみ特定のプロパイダーを読み込ませる場合のおばあちゃんの知恵袋的対応
Zend_Application利用のプロパイダー(てきとーなサンプル) ※ まっとうな方法はnoopableさんがきっとやってます! Actionについては省略します。(specialitiesやpretendなどを組み合わせて細かいことができます)
…ということでプロパイダーの完成
映像特典(おまけ)
「Zend Frameworkはフレームワークを作るためのフレームワークだからコマンドラインツールだってオレオレコマンド名で作りたい!!!!」
・・・ですよね!?
しかし、1.10のZFクラスならびにZend_Tool_Frameworkでは”zf”コマンド名が直書き…悲しいですね。↓そんな貴方のためにzfコマンドの拡張をご用意しました。
詳しくはWebでhttp://github.com/sasezaki/Diggin_Tool