Zend Framework の使い方
公式のドキュメントにあるものを見たい方は
このあたり(リファレンス 10.1. Zend_Controller クイックスタート)
を見てみるとよいでしょう。
英語でもいいよって方は、
このあたり(Zend Framework Quick Start)
もよいと思います。
では、かいつまんで解説
(適当に、公式サイトの日本語訳も混ぜながら。)
Zend Framework はオープンソースのオブジェクト指向Webアプリケーションフレームワークです。 php5用です。 各コンポーネントがなるべく依存しあわないように作ってあるので、ライブラリ的にも使えますが、いい感じにMVCできるようにもなっています。 Zend_Controller, Zend_Layout, Zend_Config, Zend_Db, Zend_Db_Table, Zend_Registry あたりはよく使われます。 使わないコンポーネントもいっぱいあります。
Zend Framework の Zend_Controller_Front は フロントコントローラ パターンを実装しています。 Zend オススメの形で利用すれば、よくあるフロントコントローラ パターンのWebプログラミングができます。
フロントコントローラ パターンでは、すべてのリクエストをいったんフロントコントローラで受け取った上でその URL にもとづいたアクションコントローラに配送します。 フロントコントローラ パターンとは違う考え方に、ページコントローラ パターンというものもあります。
どんな動きをするの?
下記のようなURLにアクセスすると
http://example.com/aaa/bbb
aaa コントローラの bbb アクションが呼び出されます(デフォルトのルーティングでは)。
下記のようなURLにアクセスすると
http://example.com/cccc/dddd/id/123
cccc コントローラの dddd アクションが呼び出されます。パラメータとして、'id' => '123' が渡されます。
最初がコントローラ名、2番目がアクション名、3番目以降は、/パラメータのキー/パラメータの値 の繰り返しです。ご存知の方にはおなじみのパターンです。
デフォルトのルーティング(URLとモジュール、コントローラ、アクションへの振り分けルール)が気に入らなければ、 好きなルールを適用できます。説明はまたあとで。
例) http://example.com/item/123 → item コントローラで 商品番号 =>123 として処理したい。 http://example.com/archive/2012/12/12 → archive コントローラ の list アクションで 2012年12月12日の記事一覧を表示するようにしたい。
デフォルトのルーティングでは困る理由として、 SEO対策の面で無駄に深い階層に見えるのがイヤなどの問題があります。 気になるならいろいろと設定可能ですし、 潔くデフォルトのルールに従ってしまえばある意味すっきり単純に作成していけます。
インストール
phpスクリプトですから、Webサーバに置くだけです。
環境は整えておいてあげたほうがよいです。
- php5が使えること
- php5用ですから。php4ならあきらめるしかありません。
- mod_rewriteが使えること
- 必須ではありませんが、使えたほうがいいです。リファレンスなどの説明にもついていきやすいです。
作る
フレームワークだけで何かできるわけではありません。 フレームワークを利用して動作するもの(アプリケーション)は自分で作ります。
というわけで、下記のような構成でディレクトリを作り、ファイルを置き、中身を書きます。 リファレンスの中や英語の Quick Start に書いてあるんですけど、慣れない方にはとっつきにくいですよね。
サンプル(基本形)ダウンロードどうぞ。
liblary/
Zend/
(ダウンロードした Zend Framework をここに置きます)
application/
config/
app.ini
controllers/
IndexController.php
models/
(とりあえず空っぽ)
layouts/
scripts/
layout.phtml
views/
scripts/
index/
index.phtml
bootstrap.php
html/
css/
style.css
image/
logo.gif
(他、必要な画像ファイル)
js/
sample.js
.htaccess
index.php
サンプル(基本形)ダウンロードどうぞ。
上図の html/ のところは、 public_html/ , www/ , htdocs/ などのほうがしっくりくる方もいるでしょう。 慣れの問題だったり、環境の問題だったりしますね。 このフォルダ名の変更は特に問題ありません。
画像、スタイルシート、Javascriptなどまでphpで出力するのもありですが、 普通は静的なファイルをおく場合が多いと思うので、そのようにしています。
動かす
Webサーバのドキュメントルート以下の好きな場所に置けば動きます。