[[FrontPage]] >

* PHPベストプラクティス [#u9c282c1]
#contents

** ディレクトリ構成とファイル名 [#oebdef1b]
-クラスが定義されているファイルの場所が分かるように、ファイルへのパスはクラス名に反映させるようにします。したがって、ディレクトリ階層は適当な深さ(2〜4階層ほど)で、各ディレクトリ名は大文字で始め、コンパクトな長さにします。
-クラス名は、ファイルへのパスの区切り文字('/'や'\')をアンダースコア('_')に置換し、拡張子を除いたものになります。
|>|>|~例|
|~1|~ファイルパス|Commons/Lang/Builder/ToStringBuilder.php|
|~|~定義されているクラス|Commons_Lang_Builder_ToStringBuilder|
|~2|~ファイルパス|Commons/Lang/Time/StopWatch.php|
|~|~定義されているクラス|Commons_Lang_Time_StopWatch|
-ファイル名は、クラスを定義している場合には(クラス名に反映させるので)大文字で始め、実行スクリプトの場合には小文字で始めます。拡張子は、''.php'' のみを用います。''.class.php'' は冗長ですし、定数定義に define は使用しない(代わりに const を使う)ので、''.inc'' を使う場面もないでしょう。

** 命名規約 [#l9f64277]
-クラス名は、上記の通りファイルへのパスを反映させます。
-他のものについては、PEARの規約に準じます。

** コーディング [#f05a526f]
*** 定数 [#v117f46b]
-定数は define せずに、抽象クラスまたはインタフェイスの中の const 変数で定義します。迂闊な二重定義を防ぐことができ、定義されている場所を見失うこともありません。

** ロギング [#xfa33d31]
-log4php のようなカテゴリとレベル機構のあるフレームワークを利用します。
--カテゴリ名には、(ディレクトリ階層を反映した)クラス名のアンダースコアをドットに置換したものを指定します。これにより、各ディレクトリ階層でログ出力を制御することができるようになります。
|>|~例|
|~クラス名|Commons_Lang_Time_StopWatch|
|~カテゴリ名|Commons.Lang.Time.StopWatch|

** ユニットテスト [#x0c8a306]

** DI [#l12f1f3a]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS