コーディング規約 > PHPのコーディング規約 > PHPの命名規約

命名規約

命名規約は、Zend Framework PHP 標準コーディング規約の命名規約にしたがっています。


クラス名

クラス名の基本的な命名規約

クラス名が複数の単語から成り立つ場合は、 SetucoServiceなどのようにそれぞれの単語の最初の文字を大文字にしなければなりません。

一般に、このフォーマットは PascalCase(CamelCase) と呼ばれています。

SetucoCMSで使用するライブラリーの最上位レベルのディレクトリーは"Setuco/"です。

クラス名は"Setuco/"ディレクトリからクラスファイル名までをアンダースコア("_")でつなげます。

ファイル名が、"Setuco/Db/Table.php" の場合はクラス名は "Setuco_Db_Table" となります。

クラス名に使用できる文字

クラス名には英数字のみが使用できます。クラス名に数字を使用することは可能ですが、 ほとんどの場合はお勧めしません。アンダースコアはパス区切り文字としてのみ使用可能です。

クラス名は大文字を連続して使用することはできません。例えば "Setuco_PDF" というクラス名は許可されません。代わりに "Setuco_Pdf" を使用します。

最上位レベルのディレクトリの記述の注意事項

SetucoCMSのソースコードは、"Setuco_"で始まるクラス名でないといけません。

抽象クラスの命名規約

一般に、抽象クラス(Abstract Class)の命名規約は通常のクラスと同じものとなります。 追加の規則として、抽象クラスの名前は最後が "Abstract" (そしてその前にはアンダースコアはつけない) でなければなりません。

たとえば "Setuco_Controller_Plugin_Abstract"は規約に従った名前ではありません。規約に従った名前は "Setuco_Controller_PluginAbstract" となります。

インターフェイスクラスの命名規約

一般に、インターフェイスクラスの命名規約は通常のクラスと同じものとなります。追加の規則として、インターフェイスの名前の最後は "Interface" (そしてその前にはアンダースコアはつけない) でなければなりません。

たとえば "Setuco_Controller_Plugin_Interface" は規約に従った名前ではありません。規約に従った名前は "Setuco_Controller_PluginInterface" となります。

ファイル名

ファイル名に関して

ファイル名は、上で説明したとおりの方式でクラス名と対応していなければなりません。 Setuco_Dbクラスの場合は、ファイル名はSetuco/Db.phpとなります。

すべてのファイルにおいて、使用可能な文字は英数字・アンダースコア およびダッシュ文字 ("-") のみです。スペースは使用できません。

ファイルの拡張子

ビュースクリプト、レイアウトスクリプト以外のPHP コードを含むすべてのファイルの拡張子は ".php" でなければなりません。 ビュースクリプト、レイアウトスクリプトの拡張子は、".phtml" でなければなりません。

関数名

関数名で使用できる文字

関数名に含めることができるのは英数字のみです。 アンダースコアを使用してはいけません。 数字を含めることは可能ですが、ほとんどの場合はお勧めしません。

関数名の形式

関数名は小文字で始めなければなりません。 関数名が複数の単語で構成されている場合は、最初の単語以外の各単語の最初の文字を大文字にしなければなりません。

一般に、このフォーマットは camelCaps と呼ばれています。

関数名を省略しすぎない

関数名は省略しすぎないようにしましょう。コードを理解しやすくするため、現実的な範囲でできるだけ詳細な名前をつけるようにするべきです。

以下の関数名は条件を満たしています。 filterInput(), getElementById(), widgetFactory()

関数を定義するときに気をつけること

グローバル関数は、特に理由がない限り使用しないようにしましょう。 このような関数は、静的クラスにまとめるべきです。

メソッド名

メソッド名の命名規約は基本的には関数と同じ命名規約です。

メソッド名のプレフィックス(接頭辞)

オブジェクト指向のプログラミングでは、 インスタンス変数や静的変数にアクセスするためのメソッドは "get" あるいは "set" のいずれかで始めなければなりません。

例 getName() setName()

"singleton" や "factory" などのデザインパターンを使用する場合は、 メソッド名にパターンの名前を含めるようにしましょう。こうすることで、 どのパターンを使っているのかがわかりやすくなります。

例 factoryModel()

データを取得するプレフィックスについて

データを取得するメソッド名は、プレフィックスによって、どこから取得するかの対象がわかったほうが、DBやファイルなどの物理データから取得するので、頻繁に取得しないでキャッシュした方がいいということがわかりますので、データを取得するメソッド名のプレフィックスは規約に従ってください。

  • クラス変数からデータを取得するメソッド名には "get"というプレフィックスをつけてください
  • DAO(DbTable)クラスに処理を任せて(委譲)データを取得するのは、"find"というプレフィックスをつけてください (DbTable以外のモデルクラスだったら)
  • DBやファイルなどの物理データからデータを取得するメソッド名は, "load"というプレフィックスをつけてください (DbTableだったら

アクセス修飾子によるメソッド名の変化

クラス内で "private" あるいは "protected" と宣言されているメソッドについては、メソッド名の最初にアンダースコア(_) 1 文字をつけなければなりません。アンダースコアを使用できるのは、 この場合のみです。"public" と宣言されているメソッドについては、 決してアンダースコアで始めてはいけません。

例 _privateMethod() publicMethod()

変数名

変数名の命名規約は、メソッド名の命名規約と同じです。

変数名をつけるときに気をつけること

変数名は省略しすぎないようにしましょう。現実的な範囲で、 できるだけ詳細でわかりやすい名前をつけるべきです。 "$i" や "$n" のような省略形が許されるのは、小さなループ内で使用する場合のみです。 ループが 10 行以上のコードになるようなら、 ループ変数にもできるだけ詳細でわかりやすいループ変数名をつけるべきです。

例 $dbHandle $itemIndex

定数

定数名で使用できる文字

定数名は、常にすべて大文字にします。

定数名には英数字およびアンダースコアを使用できます。

定数名の単語の間はアンダースコアで区切らなければなりません。 例えば "EMBED_SUPPRESS_EMBED_EXCEPTION" は許されますが、 "EMBED_SUPPRESSEMBEDEXCEPTION" は許されません。

単語の間以外では、アンダースコアを使用してはいけません。

定数を使用するときに気をつけること

定数を宣言する際には、クラスのメンバとして "const" で定義しなければなりません。とくに理由がない限り、"define"によるグローバル定数の宣言はしてはいけません。