2010年1月31日日曜日

Zend Framework1.10.0のZend_Toolを試してみた

Zend Framework 1.10.0でZend_Toolを利用してみたので、とりあえずメモ。

事前にzf.shコマンドをパスに通しておく。

Ubuntu9.10の環境で試しているので、とりあえず以下でパスを通して実行
$export $PATH=$PATH:zf.shが存在するパス
$zf.sh

エラーが出ずに動けばOK.

(1)プロジェクトを作成する。

sampleという名のプロジェクトを作成するには、

$zf.sh create project sample

と指定する。
実行が完了すると以下のディレクトリやファイルが生成される。
[生成されるディレクトリやファイル]
sample/
    application/
        Bootstrap.php    <=メソッドなしのクラス
        configs/
            application.ini
        controllers/
            IndexController.php
            ErrorController.php
        layouts/    <=空
        models/    <=空
        views/
            helpers/
            scripts/
                index/
                    index.phtml
                error/
                    error.phtml  
    public/
        index.php
        .htaccess
  
    tests/    <=PhpUnitの関連ファイル
    library/    <=空


Index、Errorの2つのコントローラが実行できるようになっている。
VIEWは以前のバージョンで試していたときは、ショートタグ形式だったけどがPHPの指定に変更になっていた。
普段ショートタグは使用してなくて、書き換えていたので、この変更はうれしい。


とりえず生成したものをブラウザからアクセスできるように設定する。
自動生成したものには、ZendFrameworkのライブラリ一式は、library配下におくことが前提になっている。
このため、Zend Frameworkのファイルをコピーするか、他にすでに配置されているようならば、シンボリックリンクを張っておく。

次に公開領域にプロジェクトのpublicディレクトリのシンボリックリンクを作成する。
#apacheの設定で、公開領域でシンボリックリンクを利用できるように設定しておく
#個人的にはあまり好きじゃないけど、とりあえず、動かすだけなので。

$cd /var/www
$ln -s ~/sample/public sample

ブラウザからアクセスするとzfで自動生成したファイルが表示される。
http://xxxxxx/sample/


Controllerの追加などは、プロジェクトディレクトリ直下でコマンド操作する。
$cd sample


(2)レイアウトを追加
1.10.0からZend_ToolでLayoutの有効・無効が設定できるようになった。

$zf.sh enable layout

コマンドを実行すると

a)layouts/script/layout.phtmlが作成される
b)application.iniに
 resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
 と追加される。

(3)アクションを追加

$zf.sh create action アクション名 コントローラ名

コマンドを実行すると
a)IndexControllerにsampleAction()が追加される
b)views/scripts/index/sample.phtmlが作成される
viewには、コントローラ名と、アクション名が表示されるようになっている。

※コマンドの説明では、
Action
zf create action name controller-name[=index] view-included[=1] module

とあって、 indexがデフォルトだと思って実行してみたけど、追加するコントローラがないと怒られる。
実はコントローラの指定では、Indexと最 初は大文字で指定しないとNGなようで、ハマッた。


(4)モデルを作成
これも1.10.0から追加されたもの

$zf.sh create model modelsample

コマンド実行すると
a)applications/models/Modelsample.php が作成される

単に空のクラスが作成されるだけ。
ディレクトリによる階層分けを試してみたけど、うまく指定できなかった。



(5)コントローラーの追加
$zf.sh create controller sample

コマンドを実行すると、
a)applications/controllers/SampleController.phpが作成される
メソッドはinit()とindexAction()が空の状態で生成される。
b)views/scripts/db/index.phtmlが作成される

(6)DBアダプターの設定をapplication.iniに追加
これも1.10.0から追加された。

$zf.sh configure dbadapter "host=ホスト名&adapter=Pdo_Pgsql&username=ユーザ名&password=パスワード&dbname=データベース名"

コマンドを実行すると
a)application.iniに指定内容がZend_Application_Resource_Dbが利用できる形で反映される。

DBパラメータ指定箇所は単に展開されるだけなので、正しいパラメータ名を記述する必要がある。

[パラメータ名]
host
adapter
dbname
username
password


※section-nameを指定して、application.ini内の任意のセクションに設定を追加できると思うのだけど、うまくいかなかった。

(7)テーブルクラスを追加
これも1.10.0で追加された。

zf.sh create db-table account account_tb -f

コマンドを実行すると

a)models/DbTable/Acctount.phpが作成される

$_nameにテーブル名が指定される状態でコードが生成される。
テーブル名を指定しないとエラーになる。
テーブル名とクラス名の規約に一致していればいいはずなので、指定なしでもいいような・・・。


マニュアルを見ると、データベースを指定して、データベースの自動生成できるようなことが書いてある。
コマンド例をいろいろ試してみたけど、できなかった。まだ、実装されていないのだろうか?

ついでに、コマンドのヘルプでは、db-tableと指定することになっているけど、リファレンスでは、dbtableになっており、どちらの指定でも生成はされていた。


DbTalbeが自動的にDB内のテーブルをスキャンして生成してくれるようになるとずいぶん楽になるんだけど、もうすこしといったところか。

0 件のコメント: