Zend FrameWorkが推奨しているコーディング規約
- PHPタグ
- PHPタグの終了タグ(?>)は省略する。
省略することで終了タグ後の空白等が存在する場合のエラーなどを回避できる。
- プログラム記述
- 字下げ(インデント)
- 1行の長さ
- 80文字で抑えられるようにする。最大でも120文字。
- 改行
- 命名規則
- クラス
- クラス名は英数字のみ使用することができる。数字の使用は推奨していない。
クラス名は単語の最初の文字は大文字、それ以外は小文字で構成されていなくてはならない。
クラス名がディレクトリパスを考慮したクラス名にしなくてはならない。
例) クラス D:\src\applcation\Test\IndexController.php であった場合
クラス名はTest_IndexControllerとなる。
(D:\src\applcationまでがアプリケーション格納パスであるため含めない)
- インターフェース
- インターフェースを定義する場合もクラスの同様の命名規則に従い、最後に「_Interface」を付けなくてはならない。
- ファイル名
- ファイル名は英数字、アンダースコア(_)、ハイフン(-)のみ使用できる。
クラスはファイル名と対応してなくてはならない。
- 関数名
- 関数名は英数字のみ使用することができる。数字は推奨していない。
関数名は小文字から始まらなくてはならない。
各単語の最初の文字は大文字でなくてはならない。
関数名は省略しすぎず、詳細な名前をつけるようにする。
グローバル関数は使用せず、できるだけ静的関数でまとめることを推奨する。
例)
filterInput()
getElementById()
widgetFactory()
- 変数
- 変数名には英数字のみ使用することができる。
クラス内のprivate, protected変数は最初にアンダースコア(_)を1文字入れなくてはならない。
public変数はアンダースコアを含めてはならない。
変数も関数名同様に単語の最初の文字は大文字でなくてはならない。
- 定数
- 定数は英数字、アンダースコアを使用することができる。
定数はすべて大文字でなくてはならない。
可読性のため、単語の間はアンダースコアで区切らなくてはならない。
クラス内の定数は const で定義することを推奨する。
- コーディングスタイル
- 文字列
- 文字列リテラル
- 変数が含まれていない文字列はシングルクォート(')で囲まなくてはならない。
だたし、SQL等の文字列でシングルクォートを使用する場合はダブルクォートで囲んでもかまわない。
- 変数の展開
- 文字列内での変数の展開を行う場合は以下の2パターンの記述方法のみとする。
$greeting = "こんにちは $name さん。ようこそ!";
$greeting = "こんにちは {$name} さん。ようこそ";
- 文字の連結
- 文字列を連結する場合は「.」を使用する。また、可読性の考慮して「.」の前後には空白を入れなくてはならない。
文字列の連結により、コードが長い場合は複数行に分ける。
この場合、以下のように「=」と「.」が同じ位置にこなくてはならない。
$sql = "SELECT `id`, `name` FROM `people` "
. "WHERE `name` = 'Susan' "
. "ORDER BY `name` ASC ";
- 配列
- 通常配列(数字の配列)
- 通常配列は負の数字を使用してはならない。
arrayを使用して配列を宣言する場合は可読性のため、カンマ(,)の後ろに空白を入れなくてはならない。
複数行またがって宣言を行う場合は開始位置が同じになるようにしなくてはならない。
$sampleArray = array(1, 2, 3, 'Zend', 'Studio',
$a, $b, $c,
56.44, $d, 500);
- 連想配列
- arrayで宣言をする場合は可読性をあげるために複数行宣言を推奨する。
また、キーと値の位置を揃えなくてはならない。
$sampleArray = array('firstKey' => 'firstValue',
'secondKey' => 'secondValue');
- クラス
- クラス宣言
- クラスの括弧({)はクラス名の下に書かなくてはならない。
1つのクラスファイルには1つのクラスしか定義できない。
クラス内にクラス以外のコード(グローバル関数など)を追加することは推奨しない。追加する場合は2行空けて追加を行う。
クラス名の上にはPHPDocを記述しなくてはならない。
/**
* これがドキュメントブロックです
*/
class SampleClass
{
// クラスのすべての内容は、
// 空白 4 文字の字下げを使用します。
}
- クラスのメンバ変数
- メンバ変数は関数(コンストラクタを含む)が始まる前に定義しなくてはならない。
var宣言は使用してはならない。
private, protected, publicのいずれかを宣言する。
public変数にアクセスする場合はアクセサ(get/set)によるアクセスを推奨する。
- 関数、メソッド
- 関数、メソッドの宣言
- private, protected, publicのいずれかを宣言しなくてはならない。
開始括弧は関数名の下につけなくてはならない。
返り値に括弧をつけてはならない。
参照渡しは関数の宣言(引数)のみ使用することができる。(通常時は使用してはならない)
/**
* これがドキュメントブロックです
*/
class Foo
{
/**
* 正しい形式です
*/
public function bar(&$baz)
{
return $this->bar;
}
}
- 関数、メソッドの呼び出し
- 引数のカンマの後ろは1つ空白を入れなくてはならない。
複数行にまたがる配列を渡す場合は以下のような記述を行う。
threeArguments(array(1, 2, 3, 'Zend', 'Studio',
$a, $b, $c,
56.44, $d, 500), 2, 3);
- 制御構造
- if, else if, else
- if, else ifの前括弧「(」に前、後括弧「)」の後ろには空白を1つ入れなくてはならない。
if、elseを使用する場合、波括弧{}を省略してはならない。
else ifはelseifと宣言してはならない
if ($a != 2) {
$a = 2;{
} elseif ($a == 3) {{
$a = 4;{
} else {{
$a = 7;{
}
}
- switch
- switchの前括弧「(」に前、後括弧「)」の後ろには空白を1つ入れなくてはならない。
defaultは省略してはならない。
switch ($numPeople) {
case 1:
break;
case 2:
break;
default:
break;
}
- インラインドキュメント(PHPDOC)
- ファイル
- クラス
- 関数
- すべての関数には以下の説明を入れる。
・関数については説明
・引数
・返り値
最終更新:2007年11月02日 16:13