Curry
PHP Framework

名前規則

Curryの動作条件

Curryではクラス名やメソッド名などの名前規則が重要です。これによりフレームワークとして成り立っています。
一般的にクラス名等の名前付け規則には以下の3パターンが存在します。

Curryでもこの3パターンを使い分けます。

クラス名

パスカルケース
例:IndexController

メソッド名

キャメルケース
例:getRequest

ファイル名

スネークケース
例:index_controller.php

クラス定義のphpファイルの場合、ファイルとクラスは必ず1対にし、1ファイルに複数クラスを定義することは決してしません。これは、クラスの定義位置を探しやすくするためです。
クラス名とその定義ファイル名は一定の規則で結びつくようにします。
すなわち、ファイル名は中に定義されているクラス名を全て小文字に直し、単語の区切りに"_"をはさんだ形にになるようにします。

PHPファイルの場合は拡張子は全て"php"です。

URL

スネークケース
例:http://www.xxxx.com/user_cart/add_product

URLに含まれるコントローラー名とアクション名は、全て小文字で単語の区切りに"_"をはさみます。
上記の例のURLの場合、UserCartControllerのaddProductメソッドが呼び出されます。

データベーステーブル名

スネークケース
例:cart_product

モデルクラス名とテーブル名も一定の規則性の上に成り立ちます。
モデルクラス名の命名規則は他のクラスと同じ、先頭と単語の頭を大文字にします。対応するテーブル名は全て小文字で単語の区切りに"_"をはさみます。

テーブル名:cart_product → モデルクラス名:CartProduct

接頭語・接尾語・拡張子の規則

例えばコントローラークラスであればクラス名の接尾語として"Controller"をつけるといったような規則も存在します。
以下に挙げるものはデフォルトの規則は存在しますが、設定を変更することが可能です。

コントローラークラスの接尾語 "Controller"
アクションメソッドの接尾語 なし
PHPファイルの拡張子 "php"
ビューテンプレートの拡張子 "php"
Smarty利用の場合のビューテンプレートの拡張子 "tpl"

名前規則のカスタマイズ

名前規則はカスタマイズが可能です。
Curryの名前規則はNameManagerというクラスで集約管理されています。
NameManagerクラスにはあらゆる命名規則の設定メソッドが用意されており、自由に設定が可能です。
NameManagerクラスの詳細はNameManagerのリファレンスを参照してください。

以下に一例を示します。

site/app/initializer.php
class Initializer extends InitializerStandard
{
    public function initialize()
    {
        NameManager::setClassType(NameType::SNAKE);
        NameManager::setMethodType(NameType::SNAKE);
        NameManager::setActionSuffix('action');
    }
}

この場合、URLと呼び出されるクラスの関係は以下のようになります。

URL:
http://www.xxxx.com/user_cart/add_product

呼び出されるメソッド
user_cart_controller::add_product_action()