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


コーディング指針

自作ライブラリの作成

Webアプリケーションを構成するスクリプトの多くは、過去に作成したWebアプリケーションのスクリプトと共通か若しくは拡張したものである。 これは、Webアプリケーションの基礎処理が既に枯れた技術であり、ほぼ普遍である事を表している。

過去に作成したスクリプトのカット&ペーストを行うよりも、繰り返し使われるスクリプトをリファクタリング*1を行い、汎用性のあるライブラリとして整理する事で、効率良く開発する事が可能となる。

既存ライブラリとの重複を避ける

PHPには、PEARやPECLなど便利なライブラリが用意されている。 必要としている機能を実現するパッケージが既に存在しているか、検索する事をお奨めする。

PEAR
http://pear.php.net/
PECL
http://pecl.php.net/

これらのサイトの右上にある“Search for”のテキスト入力欄に、関連するキーワードを入力し、[Enter]キーを押下すれば、該当するパッケージが表示されるはずだ。

目的の機能を実装したライブラリがあるのであれば、わざわざライブラリを自作する必要はない。既存のライブラリを使うべきである。

ライブラリ作成のポイント

PHPの自作ライブラリを作成する場合、留意すべき点が幾つか存在する。 ここでは、ライブラリ作成に関するポイントを解説する。

関数ではなくクラスを用いる

PHPで最も簡単にライブラリを作成するのであれば、ユーザ定義関数を用意する事である。 ただし、よほどユニークな関数名を定義しない限り、他の関数と重複してしまったり、複雑な関数名になってしまい、整理が付かなくなってしまう、というリスクがある。 そこでクラスを用いたライブラリの作成をお奨めする。

下記のスクリプトは、簡単なクラスのサンプルである。ライブラリで使用する変数や関数名も、クラスに纏める事で、他からの干渉をうけなくて済む。また、クラスの名前自体も複雑にする必要はない。

<?php
class Sample {
    var $_name;
    var $_age;

    function Sample($name = 'foo', $age = 20)
    {
        $this->_name = $name;
        $this->_age  = $age;
    }

    function getName()
    {
        return $this->_name;
    }

    function getAge()
    {
        return $this->_age;
    }
}
?>

また、クラスの場合、ライブラリの中で使用する変数もプロパティとして隠蔽しているので、他者の干渉をうける事はない。その結果、予期せぬバグによる被害はほぼ皆無となる。

グローバル変数の多用を避ける

ライブラリが使用する変数の大半は、プロパティとして保持すれば良く、グローバル変数として保持する必要は無いはずである。 だが、どうしても実現できない場合は、グローバル変数を用いる。

グローバル変数を使用した場合、ライブラリの先頭にコメントを明記しておく事をお奨めする。 これは、万が一グローバル変数の名前が重複していても、早期に何らかの手を打つ事が出来るからである。


*1 仕様を整理し、コードを再構築すること。

最終更新のRSS