ZendFramework1.6 Released! そしてコマンドライン!!

やっときた zf コマンド!!

%zf create project

キタ(゚∀゚)ッ!!

とりあえずQuickStartをやってみる。

http://framework.zend.com/download/latest
ここから、1.6-full のやつを落としてきます。mini には コマンドラインのライブラリが入ってません。

include_pathに library/Zend を設置。

で今回のメインのコマンドラインは Zend_Tool という名前で これは library/Zend には入ってない。
laboratory/Zend_Tool にあります。

これはinclude_pathじゃなくてもいいです。好きなところに。

さぁ設定。

Zend_Tool/bin/zf.php を開いて、最初にある変数2つを自分の環境に合わせて書き換える。

 
$zendFrameworkPath    = '/Users/wozozo/Sites/private/ZendFramework-1.6.0/library';
$zendFrameworkLabPath = '/Users/wozozo/Sites/private/ZendFramework-1.6.0/laboratory/Zend_Tool/library';
 

自分の場合だとこんな感じ。これでZend_Tool の設定は終わり。
あとはシンボリックリンクを張る。


mkdir ~/bin
ln -s /Users/wozozo/Sites/private/ZendFramework-1.6.0/laboratory/Zend_Tool/bin/zf.sh ~/bin/zf
chmod 755 ~/bin/zf

~/bin にパスを通しておくと便利。 自分は .zshrc に


export PATH=~/bin/:$PATH

設定終了!

/Users/wozozo% zf show version
Zend Framework Version: 1.6.0

おおお!

バージョンなんかどうでもいいのでとっととプロジェクトを作ってみる。

mkdir zfprj-test
cd zfprj-test

/Users/wozozo/zfprj-test% zf create project
creating project at /Users/wozozo/zfprj-test
/Users/wozozo/zfprj-test% ls -la
total 8
drwxr-xr-x   6 wozozo  staff   204  9  3 16:10 .
drwxr-xr-x@ 73 wozozo  staff  2482  9  3 16:10 ..
-rw-r--r--   1 wozozo  staff  1724  9  3 16:10 .zfproject.xml
drwxr-xr-x   7 wozozo  staff   238  9  3 16:10 application
drwxr-xr-x   3 wozozo  staff   102  9  3 16:10 library
drwxr-xr-x   4 wozozo  staff   136  9  3 16:10 public
/Users/wozozo/zfprj-test% 

キタ(゚∀゚)ッ!!うへへあはは。

この .zfproject.xml っていうxmlに色々設定書かれてる。xml読む気しないけど。

Controllerを追加してみる

/Users/wozozo/zfprj-test% zf create controller --name unko
Creating new controller named 'unko'
Updating project profile '/Users/wozozo/zfprj-test/.zfproject.xml'
Creating a view script.
Updating project profile '/Users/wozozo/zfprj-test/.zfproject.xml'

--name は -n でもいい。
unkoController.php と unko/index.phtml が生成される。

unkoController に benjoAction を追加。

/Users/wozozo/zfprj-test% zf create action -n benjo -c unko
Adding action 'benjo' to controller 'unko
Creating a view script.
Updating project profile '/Users/wozozo/zfprj-test/.zfproject.xml'

UnkoController.php に benjoActionメソッドが追加されて、unko/benjo.phtml が生成される。

unkoController に geriAction を追加。(viewは作らない)

/Users/wozozo/zfprj-test% zf create action -n geri -c unko -v 0
Adding action 'geri' to controller 'unko'

最後の引数の -v 0 は --viewincluded で、falseを渡せばいいみたいだけどそのまま -v false を渡すとだめだった。

あとは、

zf --help

で色々オプションが見られるけど、関数やクラスのリファレンスが表示できる。

/Users/wozozo% zf --rf array_keys
Function [ <internal :standard> function array_keys ] {

  - Parameters [3] {
    Parameter #0 [ <required> $arg ]
    Parameter #1 [ <optional> $search_value ]
    Parameter #2 [ </optional><optional> $strict ]
  }
}
/Users/wozozo% zf --rc stdClass
Class [ <internal> class stdClass ] {

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [0] {
  }

  - Methods [0] {
  }
}

今 Zend_Tool のドキュメント無くてソース読むしかないっぽい。

どこが原因かわからないけど、バグも発見した。

ZendFrameworkのマニュアルを検索するコツてきなやつ (Ubiquity)

zfマニュアルにある検索ボックス

これがびっくりするぐらいアホ。
で結局Googleさんにお願いすることになるので、じゃあマニュアルをGoogleで検索すりゃいいじゃんってなるので、

Ubiquityでコマンドを。


makeSearchCommand({
  name: "zf",
  url: "http://www.google.co.jp/search?client=safari&rls=en-us&q=site:framework.zend.com/manual/ja {QUERY}&ie=UTF-8&oe=UTF-8",
  icon: "http://framework.zend.com/favicon.ico",
  description: "Search ZendFramework Manual (ja)",
});

ZendFrameworkをFirePHPでSQLデバッグ

zf1.6でfirephpに対応します。

Firebug へのログ出力のために Zend_Log_Writer_Firebug コンポーネントを提供しています。通信プロトコルは HTTP リクエストヘッダとレスポンスヘッダを使用し、 これによってサーバとクライアントコンポーネントの間の通信を行っています。 ページのコンテンツに何も手を加えなくても、 スクリプト実行時に生成したさまざまなデータをブラウザ側で記録できるのです。 この方式なら、AJAX リクエストのようにクリーンな JSON および XML レスポンスを要求するリクエストのデバッグも行えます。

firefox3 + firephp最新版推奨。

たぶん今現在(2008/08/31)、firephpの "Next Release Preview" ってやつでしか動かない。
http://www.firephp.org/
"Firefox Extension 0.1.1.2 (Aug 25, 2008) "

エラーが出たらたぶんzfのせいじゃなくて firephp のバージョンアップのせいだとおもわれ

firephpに色々流せるみたいだけど一番気になるのは、Zend_Db_Profiler_Firebug。
firebugのコンソールに発行したSQLを全部表示できます。

設定はFrontControllerでやってしまうのが手っ取り早い。

 
$profiler = new Zend_Db_Profiler_Firebug('All DB Queries');
$profiler->setEnabled(true);
$db->setProfiler($profiler);
 
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(Zend_Wildfire_Channel_HttpHeaders::getInstance());
 

こうすると、

firebugのコンソールにこんなのが表示されます。

Zend_Db_Profiler_Firebug

あー便利。

Zend_LoaderはPEARにも使える

ZendFrameworkのコンポーネントの1つ、Zend_LoaderはSPLのautoloadを実装したものです。

PHPファイルの頭で、

 
< ?php
require_once 'Hoge/Fuga/Uhya.php';
require_once 'Unko/Chinko/Pantsu.php';
require_once 'PEAR/Something/Ahya.php';
 

っていうふうに ファイルを1個ずつ呼び出して行くのはめんどくさ過ぎなので autoload を使う。

require_once を書く代わりに、

 
< ?php
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
 

って書いておけば、もう命名規則に沿っている限り require_once はもう書かなくて良い。

Zend_Loaderは中で、アンダーバーに 「 _ 」をスラッシュ「 / 」 に置き換えて他のファイルを読む込む必要がでてきたときに勝手にインクルードしてくれる。

 
< ?php
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
 
$dh = Date_Holidays::factory('Japan', 2008, 'ja_JP');
 
$date = new Date_Holidays();
 

とりあえずPEARは全部命名規則通りだったと思うので、もうrequire_once イラネ。

Ubiquity for Firefox すげぇw

すげえw
Firefox版のQuickSilverっぽいやつかな?
vimperatorでもできるよとかはなしで。

http://labs.mozilla.com/2008/08/introducing-ubiquity/

自分でコマンド書けるし、コマンド書くときもいちいちファイル開いて保存とかしなくてもいい。
"command-editor" ってコマンド呼び出して、テキストエリアにJS書くだけ。どうやって保存するんだって思ってたら、そのままページ閉じるだけで良かった。
簡単すぎ。

チュートリアルには "Hello World"を呼び出す方法とか書いてある。呼び出した結果はMacだとGrowlに渡せる。
Windowsは特に何もインストールしないって書いてあったと思うから、たぶん右下のポップアップ?

設定は help コマンドかアドレスバーに about:ubiquity って打てばでてきます。

↓スクリーンキャスト撮った

転送量制限で見れなくなったらこっち。
http://wozozo.org/movie/2008-08-27_1635.swf