Skip to content

Latest commit

 

History

History
144 lines (121 loc) · 5.17 KB

convention.wiki

File metadata and controls

144 lines (121 loc) · 5.17 KB

  1. summary 規約
  2. labels Manual

Table of Contents

導入

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規約

詳細はZend Framework PHP 標準コーディング規約で。以下はPEARになくZend規約だけにあるものの抜粋です。

  * 変数名、プロパティ名にアンダースコア(` _` )は含めない。数字非推奨。×$md5 ○$mdFive
  * 定数宣言の場合はdefineでなくconstを使う。
  * 1行120文字(80行以上でWARNING, 120でERROR)
  * PHPのみのコードは最後の ?> を含めない
  * インターフェースは名前の最後に`_Interface`を付与する。

PEAR規約

詳細はPEAR規約参照。以下はPEAR規約のエラーチェックをパスするPHPDocのコメント例。

  * ファイルコメントブロックとクラスコメントブロックは別々に必要
  * 間隔は最大の長さの単語+1スペースで縦を揃える。
  * @paramの前後は1行空行が必要。
  * 入力がないときは@paramは省略できるが、@returnは必須。
  * 連想配列が入力でキー別に説明が必要ならコメント欄に記入。

ここまでするとphpcsのPEAR規約で検証をかけたときにエラーが出ません。

PEAR規約とZend規約のコンフクリクト

Zend規約はPEAR規約をより厳密にしたもののようですが一部競合します。

  * 相違のあるものについてはZend規約を優先させています。(PHPのみの場合?>で閉じないなど)
  * protectedの変数名についてもアンダースコアを付けています。ここはPEAR規約と大きく違うところです。

PEAR/Zend両規約対応

以下のようなインデント、スペースのコードで両規約に対応します。

  * 括弧の前後のスペースを1つ開けるのはZend規約
  * switchとcaseを揃えるのはPEAR規約

フォーマット

BEAR/data/docs/eclipse/BEAR Convention.xmlで定義されたZendStudioのフォーマッティング機能で全コードを統一フォーマットしています。このxmlファイルを使ってフォーマットするとPEAR規約、Zend規約双方でスペーシングやブランケットなどの規約エラーは出なくなります。(これから@要素を除くと規約エラーになります)

Solar規約

名前の付け方、ファイル配置などはSolar規約も参考にしています。