URL
CurryにおけるURLとコントローラーの関係
CurryはMVCアーキテクチャを採用しています。
通常のWebサイトでは、複数のphpファイルを用意してURLでは直接そのphpにアクセスしますが、Curryでは全てのアクセスはindex.phpに集約します。そしてindex.phpでURLを元に処理を行うコントローラークラスを決定する処理を行っています。
Curryではmod_rewriteの利用を前提とした綺麗なURLでのアクセスが可能ですが、mod_rewriteが利用できない環境や、もっと気軽にCurryを利用したいというユーザー向けに、クエリ文字列でのアクセスもサポートしています。
mod_rewriteを利用する場合のURL
mod_rewriteを利用する場合、URLは以下のようなフォーマットを基本とします。
http://www.xxxx.com/(コントローラー)/(アクション)
このように、ドメイン以降の"/"で区切った場合の第1セグメントのコントローラーの部分がクラスを指し、第2セグメントのアクションの部分がメソッドを指します。
例えば通販サイトで、カートの商品一覧ページを表示するURLを想定してみましょう。
http://www.xxxx.com/cart/products
この場合、"cart"がコントローラー、"products"がアクションになり、
CartControllerクラスのproductsメソッドが呼び出されることになります。
更に、パラメーターをリクエスト情報としてURLに含めたい場合は、
http://www.xxxx.com/(コントローラー)/(アクション)/(パラメーター1)/(パラメーター2)
のように指定することで、第3セグメント以降をリクエストパラメーターとして得ることが出来ます。
mod_rewriteによるアクセスの場合は.htaccessファイルが必要です。.htaccessは、典型的な設定のものがパッケージに同梱されているので、基本的にはそのままで問題ありませんが、環境によっては設定が必要です。
クエリ文字列によるアクセスの場合のURL
Curryではクエリ文字列、すなわちPHP中でグローバル変数$_GETより取得できる形でのアクセスもサポートしています。この場合、URLはこのようになります。
http://www.hoge.com/?c=(コントローラー)&a=(アクション)
"c"と"a"をキーとしたクエリ文字列で、"c="の後に続く文字列がコントローラー、"a="の後に続く文字列がアクションとして処理されます。この"c"や"a"などのキーは自由に設定することも出来ます。
またコントローラー、アクション以外のキーのパラメータももちろん付加できます。
http://www.hoge.com/?c=cart&a=products&uid=user1&limit=10
デフォルトではmod_rewriteによるアクセス前提の設定になっているので、設定の切り替えが必要です。
設定はcurry.iniによって行います。
[dispatch] ;--If you don't want to use mod_rewrite, set this flag "0". is_rewrite = 0