Zend Framework では、クラスの名前が保存先ディレクトリに直接対応するような 命名規約を採用しています。Zend Framework の最上位レベルのディレクトリが "Zend/" ディレクトリです。この配下に、すべてのクラスが階層構造で保存されます。
クラス名には英数字のみが使用できます。クラス名に数字を使用することは可能ですが、 お勧めしません。アンダースコアはパス区切り文字としてのみ使用可能です。 ファイル名が "Zend/Db/Table.php" の場合、クラス名を "Zend_Db_Table" としなければなりません。
クラス名が複数の単語から成り立つ場合は、 それぞれの単語の最初の文字を大文字にしなければなりません。 大文字を連続して使用することはできません。例えば "Zend_PDF" というクラス名は許可されません。代わりに "Zend_Pdf" を使用します。
Zend もしくは協力会社が作成した Zend Framework のファイルで配布物中に含まれているものは、すべて "Zend_" という名前で始まらなければなりません。また、それらは "Zend/" ディレクトリ階層に配置されなければなりません。
使用可能なクラス名の例は以下のとおりです。
Zend_Db Zend_View Zend_View_Helper
重要: フレームワークとともに動作するが、 フレームワークの一部ではないファイル (例えば、Zend や協力会社ではなく エンドユーザによって書かれたコード) は、決して "Zend_" で始まる名前を使用してはいけません。
インターフェイスクラスもその他のクラスと同じ規約に従う必要があります (上を参照ください)。ただし、名前の最後に "Interface" を含めなければなりません。例えばこのようになります。
Zend_Log_Adapter_Interface Zend_Controller_Dispatcher_Interface
すべてのファイルにおいて、使用可能な文字は英数字・アンダースコア およびダッシュ文字 ("-") のみです。空白文字は使用できません。
PHP コードを含むすべてのファイルの拡張子は ".php" でなければなりません。 以下の例は、この節の最初のほうで示した例のクラスに対応するファイル名の例です。
Zend/Db.php Zend/Controller/Front.php Zend/View/Helper/FormRadio.php
ファイル名は、上で説明したとおりの方式でクラス名と対応していなければなりません。
関数名に含めることができるのは英数字のみです。 アンダースコアを使用してはいけません。 数字を含めることは可能ですが、お勧めしません。
関数名は小文字で始めなければなりません。 関数名が複数の単語で構成されている場合は、 各単語の最初の文字を大文字にしなければなりません。 一般に、この方式は "studlyCaps" あるいは "camelCaps" と呼ばれています。
関数名は省略しすぎないようにしましょう。 コードを理解しやすくするため、 現実的な範囲でできるだけ詳細な名前をつけるようにしましょう。
条件を満たす関数名の例を示します。
filterInput() getElementById() widgetFactory()
オブジェクト指向のプログラミングでは、 オブジェクトにアクセスするためのメソッドは "get" あるいは "set" のいずれかで始めなければなりません。singleton や factory などのデザインパターンを使用する場合は、 メソッド名にパターンの名前を含めるようにしましょう。こうすることで、 どのパターンを使っているのかがわかりやすくなります。
グローバル関数は、できる限り使用しないようにしましょう。 このような関数は、静的クラスにまとめることを推奨します。
変数名に含めることができるのは英数字のみです。 アンダースコアを使用してはいけません。 数字を含めることは可能ですが、お勧めしません。
クラス内で "private" あるいは "protected" と宣言されている変数については、変数名の最初にアンダースコア 1 文字をつけなければなりません。アンダースコアを使用できるのは、 この場合のみです。"public" と宣言されている変数については、 決してアンダースコアで始めてはいけません。
関数名と同様 (上の 3.3 を参照ください)、 変数名も常に小文字で開始する "camelCaps" 方式を使用しなければなりません。
変数名は省略しすぎないようにしましょう。現実的な範囲で、 できるだけ詳細な名前をつけるべきです。"$i" や "$n" のような省略形が許されるのは、小さなループ内で使用する場合のみです。 ループが 20 行以上のコードになるようなら、 そのループ変数にはそれなりの名前をつけるべきです。