命名規約

グローバル変数および関数

パッケージでグローバル変数を定義する場合は、 変数名の先頭はアンダースコアで始め、 その後にパッケージ名を続けてさらにもうひとつアンダースコアをつけます。 たとえば、PEAR パッケージでは $_PEAR_destructor_object_list という名前のグローバル変数を使用しています。

グローバル関数の名前は "studly caps" 形式 ("bumpy case" あるいは "camel caps" と呼ばれることもあります) で決めます。 さらに、パッケージ名を先頭につけることで パッケージ間での名前の競合を回避します。 (先頭のパッケージ名の部分に続く) 最初の文字は小文字とし、 その後は単語の先頭の文字のみを大文字とします。たとえばこのようになります。

XML_RPC_serializeData()

クラス

クラスには、内容が理解できるような名前を指定するべきです。 略語の使用は可能なかぎり避けます。 クラス名は、常に大文字で始めるべきです。 PEAR クラス階層は、クラス名にも反映され、各階層レベルは、 アンダースコアで区切られます。良いクラス名の例を以下に示します。

Log Net_Finger HTML_Upload_Error

クラス変数およびメソッド

クラス変数 (プロパティ) およびメソッドの名前は "studly caps" 形式 ("bumpy case" あるいは "camel caps" と呼ばれることもあります) で決めます。 以下に例を示します (これらは "public" メンバーです)。

$counter connect() getData() buildSomeWidget()

プライベートなクラスメンバ (それが宣言されたクラスの内部からだけの使用を意図したクラスメンバ。 PHP は、プライベート名前空間をまだサポートしていません。)は、 アンダースコア 1 つを前に付けます。例を示します。

$_status _sort() _initTree()

次の内容は PHP5 に適用されます。

プロテクテッドなクラスメンバ(すなわち、それが宣言されたクラス内、 およびそのサブクラス内でだけ使用できるクラスメンバ)には、 前にアンダースコアを付けません。例を示します。

protected $somevar protected function initTree()

定数

定数は、すべて大文字で記述し、単語の区切りにはアンダースコアを 使用するべきです。使用されるクラス/パッケージを大文字で表した名前を 定数の接頭辞として付加してください。たとえば次のようになります。

DB_DATASOURCENAME SERVICES_AMAZON_S3_LICENSEKEY
true, false および null は例外で、すべて小文字で記述します。
URL の例 (Previous) ファイルフォーマット (Next)
Last updated: Sun, 23 Nov 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: user@example.com
codextasy, I've read some PEAR packages code and they use "public $foo_bar" and "private $_foo_bar".
Note by: codextasy
What about local variables inside functions and methods:
$my_local_var or $myLocalVar?
Note by: Carl
Yes, PHP 5.x has truly private methods and properties if they are preceded by the "private" keyword.
Note by: hablutzel1@hotmail.com
I supposed that in php5 private properties are really private. or is it wrong?
Note by: user@example.com
PHP does not yet support truly-enforceable private namespaces

In PHP 5 you have truly-enforceable private namespaces, don't you?