konekto Inc with PHP , MySQL コネクト株式会社 技術情報コンテンツ


[[コーディング指針]]

スクリプト記述ルール

スクリプトの記述ルールの基底概念は、PEAR コーディング規約に順ずるものとする。 ここでは、主な記述ルールについて説明する。

ヘッダのコメントブロック

各スクリプトには、使用するPHPのバージョンや、スクリプトのライセンス形態などを明記しておく事が望ましい。 PEARコーディング規約に則り、以下のコメントブロックをスクリプトの先頭に設ける事を推奨する。

<?php

/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

/**
* Short description for file
*
* Long description for file (if any)...
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_0.txt.  If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
* @category   CategoryName
* @package    PackageName
* @author     Original Author <author@example.com>
* @author     Another Author <another@example.com>
* @copyright  1997-2005 The PHP Group
* @license    http://www.php.net/license/3_0.txt  PHP License 3.0
* @version    CVS: $Id:$
* @link       http://pear.php.net/package/PackageName
* @see        NetOther, Net_Sample::Net_Sample()
* @since      File available since Release 1.2.0
* @deprecated File deprecated in Release 2.0.0
*/

/*
* Place includes, constant defines and $_GLOBAL settings here.
* Make sure they have appropriate docblocks to avoid phpDocumentor
* construing they are documented by the page-level docblock.
*/

/**
* Short description for class
*
* Long description for class (if any)...
*
* @category   CategoryName
* @package    PackageName
* @author     Original Author <author@example.com>
* @author     Another Author <another@example.com>
* @copyright  1997-2005 The PHP Group
* @license    http://www.php.net/license/3_0.txt  PHP License 3.0
* @version    Release: @package_version@
* @link       http://pear.php.net/package/PackageName
* @see        NetOther, Net_Sample::Net_Sample()
* @since      Class available since Release 1.2.0
* @deprecated Class deprecated in Release 2.0.0
*/
class foo
{
}

?>

詳細については、PEARマニュアルのヘッダコメントブロックを参照する事。

これまでのphpDocumentorではPHP 5に対応しきれなくなったため、バージョンアップと共にPHP 5対応となった。そのため、ヘッダコメントブロックの記述方法が大きく変わっているので注意する事。

命名規則

PEARコーディング規約に則り、ファイル名や変数名など、PHPに関する命名規則を定義する。

クラス

クラスは、そのクラスの用途が分かる名前にするべきである。 また、名前は単語単位で区切り、各単語の頭文字を大文字、2文字目以降を小文字とし、単語の間をアンダースコア(“_”)で結合したものとする。

例)

  • Net
  • Net_Socket
  • Net_Socket_Error

2つ以上の単語から成り立つ名詞の場合は、次のように命名する。

  • XMLParser
  • Net_TrackBack

関数およびメソッド

関数およびメソッドは、【動詞】または【動詞+名詞】となるように命名する。 この時、動詞は全て小文字で記述し、名詞の頭文字を大文字、2文字目以降を小文字で記述すること。

例)

  • get()
  • getInstance()
  • getUserName()
  • getQueryString()

プライベートメソッドは、メソッド名の先頭に“_”をつけること。 ただし、PHP 5以前ではパブリックとプライベートの区別が全く無いため、利用者が区別をする必要があるので注意。

定数

定数の名前は、全て大文字で記述する事。 また、名前の重複を避けるためにも、“Example::”パッケージで宣言する定数は、“EXAMPLE_”で始まるようにする事。

グローバル変数

パッケージでグローバル変数を使う場合、アンダースコアで始まり、パッケージ名などをアンダースコアで結合したものを変数名として使う事。

例)

  • $_example_test

インデント

インデントは、ハードタブ(\t)を使わず、半角空白4文字で記述する。

1行あたりの文字数は76文字を上限とし、76文字を超える場合は次行に折り返して記述する。その際、行頭にはインデントを1レベル追加(ぶら下げ)する。

サンプルコード

$sql = 
    'SELECT name, age, birthday, zipcode, address, comment ' .
    'FROM user_information WHERE user_id=? AND is_delete = 0';
// 長くなる文字列は、上記のように分割して、"."で結合すると良い

エディタの設定

【Zend Studio】

タブサイズ
タブを空白文字に置換
有効

【vi(またはviクローン)】

set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4

制御構造

if, for, while, switch 等の制御構造は、次のルールで開き括弧を記述する

if, else, elseif

if ($flag1) {
    $ret = 1;
} elseif ($flag2) {
    $ret = 2;
} else {
    $ret = 3;
}

for

for ($var = 0; $var < $maxvar; $var++) {
    echo $var . "\n";
}

foreach

foreach ($var as $key => $value) {
    echo $key . ":" . $value . "\n";
}

while

while ($flag) {
    var_dump($flag);
}

do〜while

do {
    var_dump($flag);
} while ($flag);

switch, case

switch ($var) {
case "1":
    break;
case "2":
    break;
case "3":
    break;
default:
    break;
}

関数

function isFoo($var)
{
    return strcmp($var, "foo") === 0;
}

クラス、メソッド

class Foo {
    var $_foo;

    function Foo()
    {
        $this->_foo = 1;
    }

    function isFoo($var)
    {
        return strcmp($var, "foo") === 0;
    }
}

関数およびメソッドの記述ルール

引数とオブジェクト

引数にオブジェクトを用いる際は、必ず参照渡しを使う。

function getName(&$obj) {
    return $obj->getName();
}

戻り値とオブジェクト

戻り値にオブジェクトを返す場合、クローンが不要であるなら参照渡しを行う。

function &getObj($obj) {
    return $obj->getItem();
}

PHP 5との互換性の実現

PHP 4を対象にコーディングを行う場合でも、以下の点に注意をすれば、PHP 5への移行作業が容易になる。

  • PHP 5で使用されている予約語を使用しない
  • 関数/メソッドの引数にオブジェクトを用いる場合は、必ず参照渡しを行う
  • パブリック/プライベートの宣言を厳守する
  • $this = new Foo();のようなオブジェクトの自己書き換えを行わない
  • メソッド名に “__”(アンダースコアを2つ以上続けたもの)を用いない

添付ファイル: fileheader_comment.php 361件 [詳細]

最終更新のRSS