Mee's Engineer Blog

PHPエンジニアの技術ブログ

PHPのコーディング規約に関して(PSR-2)

コーディングルールって人によってまちまちだったりして、時として「うわ!このソース読みづらっ!」ってなったりしますよね。

そういう事もあり、コーディング規約に関して勉強しています。
今参考にしているのが現場でも採用されているPSR-2。
基本的なコーディング規約であるPSR-1にちょこちょこ追加されたものです。

コーディングの際の参考にして頂ければ。

<?php
// 開始は「<?php」または「<?=」のみ可
// ファイルの文字コードはUTF-8(BOMなし)
// 改行コードはLF
// 行の長さをソフトリミット120字とし、80字以内におさまるようにする

// 呼んだだけで動くファイルの中で宣言系の処理を書いてはいけない(クラス定数は除く)
// define("DEF_ITEM", '定数アイテム');

// クラス名はアッパーキャメルケース
// extendsは同じ行に書く
class RulesExplain extends RulesBase
// クラス名のあとの「{」は改行する
{
// インデントは半角スペース4つ
    
    // 定数は大文字+「_」で定義する
    const DEF_ITEM = '定数アイテム';
   
    // アクセス修飾子は必ずつける
    // 関数名は(ローワー)キャメルケース 
    // 引数後のカンマの前にスペースは入れない
    // 引数後のカンマの後にはスペースを入れる
    public function getRules($rule1, $rule2)
    // 関数名のあとの「{」は改行する
    {
        // 変数名に関しては一貫性を持たせればなんでもいい(今回はキャメルケース)
        $rulesName = $rule1;
        
        // 予約語は小文字にする
        $rulesBool = true;
        
        // 「if」などと「(」の間は半角スペースを空ける
        // 「)」と「{」の間は半角スペースを空ける
        // ifなどの後の「{」は改行しない
        if ($rulesName === $rulesBool) {
            echo 'rule!';
        // elseifはつなげる
        } elseif ($rulesName === $rule2) {        
        
        }
        
        //「;」の前の空白は不要
        for ($i = 0; $i < 5; $i++) {
            echo 'rule' . $i;
        }
    }
    
    public function tooMuchArgument(
        // 複数行になる場合、1行につき引数は1つまで
        $itemOne,
        $itemTwo,
        $itemThree,
        $itemFour,
        $itemFive,
    ) {
        $itemTemp = $itemOne;
        
        switch ($itemTemp) {
            case 1:
                echo '1以上';
                // no break
                // 空でないcaseで意図的にbreakしない場合その旨のコメントを使う
            case 2:
            case 3:
                echo '2以上';
                break;
        }
       
    }
}
// [EOF]
// ファイルの末尾は改行し空行をいれる
/* 「?>」は省略する */

説明部分をコメントとして残してみたけどえらく見づらいな(´Д`;)

コーディング規約を手短に伝えるため肝心のソースの中身は適当です(笑)