コーディングガイドライン: はじめに
concrete5 で改造、拡張ブロック作成、パッケージ作成される際の、コーディングのガイドラインです。開発元該当ページの翻訳版です。
v5.3.2時点でのコーディングガイドラインです。
特にマーケットプレイスでパッケージを配布されたいと思われている方は、このガイドラインを厳守して下さい。
フォーマット
- php開始宣言は"<?php"でお願いします。"<?"ではありません。古いバージョンでは、php無しのコードもありますが、今後は "<?php"を必須にして行きます。
- テキストのインデントは、タブでお願いします。スペースは認めません。
- ファイルが、phpコードのみの場合、クロージングタグ "?>"の使用をしないで下さい
- 一行の長さを半角80字以内に
- UNIX形式の改行コード (LF) が必須
- 日本語が含まれる場合、エンコーディングを UTF-8 に
- ファイル名・関数名・クラス名は全て半角英数字で記入
名前付けのルール
ファイル & ディレクトリー名
- ファイル・ディレクトリー名は全て、半角英小文字、単語を分ける時は下線(_)を使用。英語大文字は認められません
クラス、関数(Function)名前付け
- ブロックのクラス名は「MyBlockNameBlockController」 = (ブロック名BlockController)」といったようにして下さい。
- 「MyBlockName」は、ブロックが保存されているディレクトリー名に単語の最初を英数大文字にしたものです。
- 例えばブロックを格納しているディレクトリーが「image_gallery」だとすると、controller.php内のクラス名を「ImageGalleryBlockController」として下さい。
- ディレクトリー名を「imagegallery」と下線をつけない場合でも、英単語が2つ入っているのでクラス名を「ImageGallery」と単語の最初の文字を大文字にして下さい。
- ヘルパーの名前は「HelperNameHelper」 = (ヘルパー名Helper) として下さい
- 例えば、新たにディレクトリー「ldap_authenticate」を作成し、そのディレクトリー内にファイルを格納する場合、ヘルパー名は「LdapAuthenticateHelper」としなければいけません。
クラス・ファンクションの操作(Method)
- システムの基幹モデルは、データベースのテーブル名と同じように名前付けして下さい。
- 「page.php」であれば、「Page」や「Pages」。「page_theme.php」であれば「PageTheme」や「PageThemes」など
- モデル内では、すべて、半角英文字のみを使用し、単語の最初のみを大文字にして下さい。下線(_)の使用は禁止です。
- controller内でのfunctionは全て半角英小文字で統一して下さい。controllerでは下線の使用が許可されています。
パラメーター (Parameter)
- 全てのパラメーターは、半角英小文字のみ(大文字は不可)。下線の使用が許可されています。
データベース・テーブル
- 全てのデータベース名は、単語の1文字目が大文字、そのあとは小文字の表記でお願いしますが、以下の例外があります。
- ブロックタイプ用のテーブルは「bt」という小文字で始めて下さい。その後は上記の通りです。
- ブロックがいくつかのテーブルを使用することになれば、テーブル名の最初に、「btブロック名」を入れて下さい。
- 例:投票ブロック「btPoll」「btPollQuestions」「btPollAnswers」など
コーディングスタイル
文字列 (String)
- 変数置換が含まれていない場合
- 文字列にアポストロフィー「'」を使用して下さい
- 文字列にアポストロフィー「'」が入る場合のみ、クオート「"」を使用して下さい
- 変数置換は以下の2パターンで可能です。これ以外の方法は使わない様にしてください
- 例
- $greeting = "Hello $name, welcome back!";
- $greeting = "Hello {$name}, welcome back!";
- 例
- 文字列・変数連結処理
- 文字列を結合される場合は「.」半角ピリオドを使用し、ピリオドの前後には半角のスペースを入れて下さい。
- 例:$dish = 'Fruit' . ' ' . 'Salad';
- 半角ピリオド「.」で連結処理をする際に、行が長くなった場合、処理を複数行化する事が認められます。
- 例:
- $img = "<img border=\"0\"(省略)
- $img .= ($align) ? "align=\"{$align}\" " : '';
- $img .= ($style) ? "style=\"{$style}\" " : '';
- 例:
- 文字列を結合される場合は「.」半角ピリオドを使用し、ピリオドの前後には半角のスペースを入れて下さい。
配列 (Array)
- 数字での配列
- マイナスを使わないで下さい
- 配列(Array)は常に「0」を基本とする様にして下さい
- 配列のインデックスを宣言する際、読みやすい様にカンマ(,)の後に、半角ページを忘れずにお願いします
- 例:$sampleArray = array(1, 2, 3, 'Concrete');
- 連想配列 (Associative Array)
- 連想配列を宣言する際は、配列毎に改行し、配列名と値が見やすい様に空白をおいて下さい
クラス (Class) 操作 (Method) 関数 (Function)
- クラス名は、行の一番最初、インデントなしで開始して下さい
- クラス・関数の定義の最初の中括弧 (Brace) は宣言文と同じ行に記入して下さい
- 例: class ○○Controller extends Controller {
- クラス・関数の定義の最後の中括弧 (Brace) は新しい行に、クラスや関数と同じインデントで宣言して下さい。
- 例:
class ○○Controller extends Controller {
$this-> $cdemo = "demo"
}
- 例:
- クラス変数を宣言する際、php5のキーワードに沿うようにしてください
制御・分岐処理
If/Else If/Else
- if / elseif を宣言する際は、開始括弧の前と終了括弧の後に、半角の空白を入れて下さい。
- 条件を宣言する分は、半角スペースを使い読みやすい様にして下さい、また条件が複雑になる場合は、条件の内部で分岐処理をするなど、論理的な構造にして下さい
- 「elseif」よりも「else if」を使用する様にして下さい
- 開始の括弧は、条件の宣言と同じ行に記入し、終了の括弧は、改行後にその括弧のみが、宣言と同じインデントで宣言される様にして下さい
- 例:
if ($a=demo) {
$b = "test"
}
- 例:
- 一行だけの 「if」「else」で、括弧「{}」を省略する事を禁止します
Switch
- Switch 条件の開始括弧の前、終了括弧の後に、半角スペースを記入して下さい
- Switch 内のコードには、かならず、インデントを1つ加える事を忘れないで下さい
- また、「case」内も必ずインデントを加える様にして下さい
- 例:
switch ($numPeople) { case 1: break;
case 2: break;
default: break; }
- 「default」を省略しないで下さい
制御構文に別の条件を加える行為
- 制御構造に関する別の構文 (PHPマニュアルページ) の行為は許可しません