- summary 規約
- labels Manual
BEARのコード規約はPEARとZendの規約を組み合わせたものです。PHPDocのコメント部分の書式はPEAR、コメント以外のコードはZendの規約とそれぞれ厳しい方を採用しています。コードのチェックにはPHP_CodeSnifferを使用しPEAR/Zend双方の規約でチェックしています。
PEARやZendのライブラリのようなファイルパス、クラス名にしています。
例)`<パッケージ名>.php`
* Error.php
例)補助クラス使用
* Emoji.php * Emoji/Map.php (`Emoji_Map`クラス)
例)インターフェイス使用
* Ro.php * Ro/Interface.php(`Ro_Interface`インターフェイス)
例)Adpterパターン使用
* Cache.php * Cache/Adapter.php (`BEAR_Cache_Adapter`アブストラクトクラス) * Cache/Adapter/Memcache.php(`BEAR_Cache_Adapter_Memcache`コンクリートクラス)
詳細はZend Framework PHP 標準コーディング規約で。以下はPEARになくZend規約だけにあるものの抜粋です。
* 変数名、プロパティ名にアンダースコア(` _` )は含めない。数字非推奨。×$md5 ○$mdFive * 定数宣言の場合はdefineでなくconstを使う。 * 1行120文字(80行以上でWARNING, 120でERROR) * PHPのみのコードは最後の ?> を含めない * インターフェースは名前の最後に`_Interface`を付与する。
詳細はPEAR規約参照。以下はPEAR規約のエラーチェックをパスするPHPDocのコメント例。
* ファイルコメントブロックとクラスコメントブロックは別々に必要 * 間隔は最大の長さの単語+1スペースで縦を揃える。 * @paramの前後は1行空行が必要。 * 入力がないときは@paramは省略できるが、@returnは必須。 * 連想配列が入力でキー別に説明が必要ならコメント欄に記入。
ここまでするとphpcsのPEAR規約で検証をかけたときにエラーが出ません。
Zend規約はPEAR規約をより厳密にしたもののようですが一部競合します。
* 相違のあるものについてはZend規約を優先させています。(PHPのみの場合?>で閉じないなど) * protectedの変数名についてもアンダースコアを付けています。ここはPEAR規約と大きく違うところです。
以下のようなインデント、スペースのコードで両規約に対応します。
* 括弧の前後のスペースを1つ開けるのはZend規約 * switchとcaseを揃えるのはPEAR規約
BEAR/data/docs/eclipse/BEAR Convention.xmlで定義されたZendStudioのフォーマッティング機能で全コードを統一フォーマットしています。このxmlファイルを使ってフォーマットするとPEAR規約、Zend規約双方でスペーシングやブランケットなどの規約エラーは出なくなります。(これから@要素を除くと規約エラーになります)
名前の付け方、ファイル配置などはSolar規約も参考にしています。