Yiiの基本規約

Yiiの公式サイトのConvensions(取り決め)を見る限り、『Yiiは構成上での取り決めを支持します。取り決めを守る事で、 複雑な構成管理をコーディングする事なく洗練されたYiiアプリケーションを 作成できます。』となっています。

つまり、これは、CakePHPとCodeIgniterの両方のいいところ取りと考えてもいいのでしょうか。CakePHPは『設定よりも規約』を重要視しています。規約を重要視しているので、習得には時間がかかりますが、メンテナンス性はいいと思います。CodeIgniterは規約よりも速度や使いやすさに重点を置いているように思いますので、学習効率はいいと思います。

とりあえず、Yiiの推奨している規約(取り決め)を学習することにします。

 URL

まずデフォルトのURLを調べてみます。

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

デフォルトのControllerIDが『site』、デフォルトの『ActionID』が『index』ですので、これをデモサイトの’Hello World’に当てはめてみると、

http://y.winroad.info/yii/demos/helloworld/index.php?r=site/index

となりますが、デフォルトの文字は省略できますので、

http://y.winroad.info/yii/demos/helloworld

と記述することも出来ます。

ということは、SiteController.phpに下記コードを追加すると

	public function actionTest()
	{
		echo 'This is Test site';
	}

http://y.winroad.info/yii/demos/helloworld/index.php?r=site/test

となります。

命名規則

公式サイトによると、『Yiiは変数名、関数名、クラス名に、単語の最初の文字を大文字に変換し 空白を除いて連結したキャメルケースで命名する事を推奨します。 変数名と関数名の最初の単語の先頭は、クラス名と区別をつけるために 小文字で始めて(例えば$basePath,runController(), LinkPagerの様にして)下さい。プライベートなクラスメンバ変数は アンダースコアを前置詞に使用する(例えば$_actionListの様にする) 事が推奨されています。』とありますが、いまいちわかりづらいので、私なりに整理してみます。これも間違えていたら後で修正します。

キャメルケースとは、アルファベットで複合語やフレーズを表記する際、各単語や要素語の先頭の文字を大文字で表記する手法のことである。
例えば、通常の英語の表記では「this is an example」とスペースで隔てて表記するが、キャメルケースでは「thisIsAnExsample」とつなげて表記する。
一番最初の単語(上記の例では「this」)の先頭文字を小文字にした表記方法は、キャメルノーテーション(camel notation)と呼ばれることもある。これに対して、「ThisIsAnExsample」のように先頭の文字を大文字にした場合は、アッパーキャメルケース、あるいはパスカルケース(PascalCase)などと呼ばれることが多い。(IT用語辞典BINARYより)

1) 基本的に、フォルダ名はデモサイトでわかるとおり、すべて小文字になっていますので、すべて小文字で統一します。

2) コントローラはファイル名とクラス名の両方とも頭の文字を大文字にして、空白やアンダーバーは使用せず、後続の単語も大文字で始まる(キャメルケース)で命名します(例:SiteController、WelcomeController)。

3) 関数名や変数名は、一番最初の文字を小文字で始める、キャメルノーテーションで表記します(例:actionIndex、actionPlay、actionTest)。

4) コントローラ名の特別な規則がちょっと面倒です。コントローラ名には、単語の語尾に必ず『Controller』を追加しなければならいのですが、コントローラIDは『Cotoroller』を削除して単語の先頭の文字の大文字を小文字に変換した単語です。つまりコントローラ名は『SiteController』ですが、コントローラIDは『site』ということになります。

5) クラスファイルは必ずパブリッククラスと同じ名前にしなければなりません。また、クラスファイルには、1つ以上のパブリッククラスを持つことはできません。プライベートクラスは同じクラスに入れることができます。

6) ビューファイルは、同じ名前のファイル名に含まれる必要があります。

7) 設定ファイル名は自由につけることができます。

フォルダ構成

Yiiはフォルダ構成により、色々整理しているみたいです。

1) WebRoot/protected

このフォルダは、index.php以外の全てのフォルダやデータファイルを保存する場所です。デフォルトでapplicationというエイリアス名でつながっています。このフォルダには、直接アクセスすることが出来ないように、『.htaccess』ファイルを設置します。

2) WebRoot/protected/runtime

このフォルダには、アプリケーションの実行時に作成されたプライベートな一時ファイルが保存されます。

3) WebRoot/protected/extensions

このフォルダは、全てのサードパーティ製の拡張ファイルを保存します。Yiiはこのパスに対して『ext』というデフォルトエイリアスを持ちます。

4) WebRoot/protected/modules

このフォルダには、全てのアプリケーションモジュールを保存します。それぞれのモジュールはサブフォルダ名で区別します。

5) WebRoot/protected/controllers

このフォルダにコントローラクラスファイルを保存します。

6) WebRoot/protected/views

このフォルダは、コントローラビュー、 レイアウトビュー、システムビューを含む全てのビューファイルを保存します。とありますが、まだ現段階では、コントローラビュー、レイアウトビュー、システムビューの概念がわかりません。

7) WebRoot/protected/views/ControllerID

このフォルダには、シングルコントローラクラスのビューファイルを保存します。

8) WebRoot/protected/views/layouts

このフォルダには、全てのレイアウトビューファイルを保存します。

9) WebRoot/protected/views/system

このフォルダは、全てのシステムビューを保存します。

10) WebRoot/assets

このフォルダは発行されたアセットファイルを保存します。

11) WebRoot/themes

このフォルダは、アプリケーションに適用可能な、様々なテーマを保存します。テーマごとに、サブフォルダで区別されます。

 データベース

1) データベース名とカラム名は小文字でつける。

2) 名前はアンダースコアで連結する。

3) テーブル名は、単数形にする。

4) テーブル名は共通のプレフィックスをつける。(たとえば、tbl_をつけます。)

 

とりあえず、基本規約はこんなところでしょうか。ただ、ほとんどの説明に推奨と書いてあり、強制はしないようです。

まだまだ、理解するには時間がかかりそうですが、本日は、以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

2011年11月17日 | コメント/トラックバック(0) | トラックバックURL |

カテゴリー:Yii

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ