Curry
PHP Framework

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によって行います。

configs/curry.ini
[dispatch]

;--If you don't want to use mod_rewrite, set this flag "0".
is_rewrite = 0