0 follower

取り決め

Yiiは構成上での取り決めを支持します。取り決めを守る事で、 複雑な構成管理をコーディングする事なく洗練されたYiiアプリケーションを 作成できます。もちろんYiiは、必要であればほぼ全ての局面を構成し直す事で、 カスタマイズ可能なままです。

下記ではYiiプログラミングで推奨される取り決めを述べます。 ここでは利便性の為、Yiiアプリケーションのインストールされている位置を WebRoot として扱います。

1. URL

デフォルトでは、YiiはURLを下記のフォーマットで認識します:

http://hostname/index.php?r=ControllerID/ActionID

GET変数 rroute を参照し、 Yiiによってコントローラとアクションに解決されます。もしActionID が省略された場合、コントローラはデフォルトアクション (CController::defaultActionで定義されたもの)を使用します: そして、もしControllerID も省略された場合(または r の変数が無い場合)、 アプリケーションは(CWebApplication::defaultControllerで定義された) デフォルトのコントローラを使用します。

CUrlManagerの助けによって、http://hostname/ControllerID/ActionID.html の様な、よりSEOフレンドリーなURLを作成することが可能です。この機能は URL Managementによって細かい部分まで カバーされています。

2. コード

Yiiは変数名、関数名、クラス名に、単語の先頭を大文字に変換し 空白を除いて連結したキャメルケースで命名する事を推奨します。 変数名と関数名の最初の単語の先頭は、クラス名と区別をつけるために 小文字で始めて(例えば$basePath,runController(), LinkPagerの様にして)下さい。プライベートなクラスメンバ変数は アンダースコアを前置詞に使用する(例えば$_actionListの様にする) 事が推奨されています。

名前空間がPHP 5.3.0よりも前のバーションではサポートされていないので、 サードパーティーのクラス名と衝突を避ける為に、独自の命名方法を用いる事が 推奨されます。この理由によって、Yiiフレームワークでは"C"という文字を 前置詞として用いています。

コントローラ名の特別な規則として、Controller という単語を語尾に 追加しなければなりません。コントローラIDは、クラス名の先頭を小文字にし、 Controller の部分を取り除いたものとして定義されます。例えば PageController というクラスがあった場合、 page というIDを持つことになります。このルールはアプリケーションをより 安全にします。そして、このコントローラに結びついたURLを少し綺麗に (例えば/index.php?r=PageController/index の代わりに /index.php?r=page/index の様に)します。

3. 設定

設定項目はキーとバリューが対になった配列です。それぞれのキーは設定される オブジェクトのプロパティの名前を表し、それぞれの値は結びついたプロパティ の初期値です。例えばarray('name'=>'My application', 'basePath'=>'./protected')namebasePath プロパティ を結びついた配列の値で初期化します。

オブジェクトのすべての書き込み可能なプロパティが設定可能です。 もし何も設定しない場合は、プロパティはその初期値を用います。 もしプロパティを設定する場合はドキュメントを読むことでプロパティ に与えられた初期値が分かるので有益です。

4. ファイル

タイプに応じたファイル名の取り決め。

クラスファイルは、それが含むパブリッククラスに従った名前を 付けなければいけません。例えば、 CController クラスが入るのは CController.php ファイルになります。パブリッククラスとは 他のクラスから利用されるであろうクラスです。それぞれのクラスファイル は一つまでしかパブリッククラスを含んではいけません。プライベートクラス (一つのパブリッククラスによってのみ利用されるクラス)はパブリッククラス と同じファイルに入れる事が出来ます。

ビューファイルはビュー名に従って名づけられなければいけません。 例えば、index ビューは index.php ファイルの中に入ります。 ビューファイルは主に表示の目的で、HTMLとPHPコードを含んだ PHPスクリプトファイルとなります。

設定ファイルは自由に名づけることが出来ます。一つの設定ファイルは、 設定の為の連想配列を返す事を目的としたPHPスクリプトです。

5. ディレクトリ

Yiiはデフォルトのディレクトリのセットが様々な目的で利用されることを 仮定しています。それぞれのディレクトリは、もし必要ならば カスタマイズする事が可能です。

  • WebRoot/protected: このディレクトリは アプリケーションベースディレクトリ application base directory で、全てのセキュリティセンシティブなPHPスクリプトとデータファイル を保有しています。Yiiはデフォルトでこのパスに結びついた application というエイリアスを持っています。このディレクトリと、 配下の物はウェブユーザからのアクセスに対して守られていなければなりません。 このディレクトリは CWebApplication::basePath によってカスタマイズ 可能です。

  • WebRoot/protected/runtime: このディレクトリはアプリケーションの 実行時に作成されたプライベートな一時ファイルを保有します。 このディレクトリはウェブサーバのプロセスから 書き込み可能でなければなりません。このディレクトリは CApplication::runtimePath によってカスタマイズ可能です。

  • WebRoot/protected/extensions: このディレクトリは全ての サードパーティ製の拡張ファイルを保有します。 CApplication::extensionPathによってカスタマイズ可能です。

  • WebRoot/protected/modules: このディレクトリは全てのアプリケーション モジュールを保有します。それぞれのモジュールはサブディレクトリで表現されます。

  • WebRoot/protected/controllers: このディレクトリはコントローラ のクラスファイルを保有します。CWebApplication::controllerPath によって カスタマイズ可能です。

  • WebRoot/protected/views: このディレクトリは、コントローラビュー、 レイアウトビュー、システムビューを含む全てのビューファイルを保有します。 CWebApplication::viewPath によってカスタマイズ可能です。

  • WebRoot/protected/views/ControllerID: このディレクトリは シングルコントローラクラスのビューファイルを保有します。ここでの ControllerID はコントローラのIDを意味します。CController::getViewPath によってカスタマイズ可能です。

  • WebRoot/protected/views/layouts: このディレクトリは全てのレイアウト ビューファイルを保有します。CWebApplication::layoutPath によって カスタマイズ可能です。

  • WebRoot/protected/views/system: このディレクトリは全ての システムビューファイルを保有します。システムビューは例外やエラーを 表示する時に使用されるテンプレートです。CWebApplication::systemViewPath によってカスタマイズ可能です。

  • WebRoot/assets: このディレクトリは発行されたアセットファイル を保有します。アセットファイルは、おそらくウェブユーザからアクセス 出来るよう発行されているプライベートファイルです。このディレクトリは ウェブサーバのプロセスから書き込み可能でなければなりません。 CAssetManager::basePath によってカスタマイズ可能です。

  • WebRoot/themes: このディレクトリはアプリケーションに 適用可能な様々なテーマを保有しています。それぞれのサブディレクトリが、 ディレクトリ名と同じ名前を持った一つのテーマを表しています。 CThemeManager::basePath によってカスタマイズ可能です。