1.PHPプログラムの書式
文字コード
- 特別な理由が無い限り「UTF-8 BOM(Byte Order Mark)なし」を推奨
- 特に「BOM」コードが付いていると動作に支障が出ることがあるので注意が必要
改行コード
- 行末は「ラインフィード(LF)のみにしなければならない(16真数では「0x0a」)」
- Windowsの「キャリッジリターン(CR)」やMachintoshでの「キャリッジリターン+ラインフィード(CRLF)は利用しない」
開始と終了
- PHPでの開始タグには短縮形「<?」は使用せず、「<?php」を使用する
- 終了タグの後に空白や改行があると、それをブラウザに出力してしまう為、終了タグ「?>」は使用しない(PHPは終了タグがなくても正常に動作する)
終了タグは使用しない
<?php プログラムを記述
インデント
- ソースの可視性を高める為、必ずインデントを行う
- インデントは、「半角空白4文字」で行う
- タブを使用しない
- プログラム全体のインデントは行わない
良い例
<?php $message = 'PHP フレームワークの本命「Zend Framework」'; echo $message;
悪い例
<?php
$message = 'PHP フレームワークの本命「Zend Framework」';
echo $message;
1行の長さ
- プログラムソースの一行の長さは80文字までを推奨。最大でも120文字とする
- 長すぎる場合の対処(書く対処により見にくくなった場合、空白で微調整してください)
- カンマの後で折り返す
- 演算子の前で折り返す
- 二つ目以降のインデントでは、前の行と同じ位置に左端を揃える
例1:メソッド呼び出しの記述例
//悪い例(半角空白4つだと読みづらい)
someMethod($longExpression1,$longExpression2,$longExpression3,
$longExpression4,$longExpression5,);
//良い例(揃えると見やすくなった)
someMethod($longExpression1,$longExpression2,$longExpression3,
$longExpression4,$longExpression5,);
//良い例
$var = someMethod1($longExpression1, //メソッドの戻り値を変数に代入する場合
someMethod2($longExpression2, //メソッドの引数にメソッドを記述する場合
$longExpression3));
例2:数式の記述
//悪い例(かっこの位置がわかりづらい)
$longName1 = $longName2 * ($longName3 + $longName4
- $longName5) + 4 * $longName5;
//良い例
$longName1 = $longName2 * ($longName3 + $longName4 - $longName5)
+ 4 * $longName6;
例3:インデントが深くなり右に寄ってしまう
$var = someMethod1($longExpression1,
someMethod2($longExpression3,
$longExpression4)));
//良い例 いったん、別変数で持つなどして深いインデントを避ける
$var = someExpression3($longExpression3,$longExpression4);
$var = someExpression2($longExpression2,$var);
$var = someExpression1($longExpression1,$var);
例4:ifの記述
if(($condition1 && $condition4)
|| ($condition3 && $condition4)
|| !($condition5 && $condition6)){ //悪い改行
doSomethingAction(); //この行が判りにくくなる
}
こうしよう
if(($condition1 && $condition2)
|| ($condition3 && $condition4)
|| !($condition5 && $condition6)){
doSomethingAction();
}
//あるいはこうする
if(
($condition1 && $condition2)
|| ($condition3 && $condition4)
|| ($condition5 && $condition6)
){
doSomethingAction();
}
例5:三項演算子の記述
$alpha = ($aLongBooleanExpression) ? $beta : $gamma;
$alpha = ($aLongBooleanExpression) ? $beta
: $gamma;
$alpha = ($aLongBooleanExpression)
? $beta
: $gamma;