複数人で開発するときに、ほんの少しのことなんですけれど、意外と気になるのがインデントや括弧や改行の入れ方です。
google analyticsを見てみたら、php_beautifierで検索してくる方がいらっしゃるので、少し丁寧にしてみました。 お役に立てるといいのですが。
始めに言っておきますが、どのような入れ方であっても文法的にさえ正しいなら問題はないのです。単なる好みであり、これまで自分式インデントでコードを見続けたことによる慣れの問題です。
組織がしっかりしていると、コーディングスタンダードを決めておく手がありますが、組織をまたいでゆるく連携した開発チームではそうもいきません。
さてこのコーディングスタンダード、自分がゼロから作り、自分だけが保守するコードは自分好みにできるので問題ありません。
問題は、他人が作り、自分が保守するコードです。これは一時的にでも自分が慣れたコーディングスタンダードに変換した方が、気分がすっきりしますし、構造もつかみやすいし、文法上のミスも見つけやすいです。
ということで、表題の PHP_Beautifier です。PHPのコードを整形するpearのパッケージです。PHP_Beautifier自体はphp5上で動作しますが、整形対象のphpファイルのバージョンは問いません。
今回は、作業用のWindowsマシンに最新版のxamppを導入して実行します。実行用のバッチファイルの中身は、
(追記)
xamppの導入場所は、c:\xampp。php5がアクティブです(php_switch.batしていない)。
また、ディレクトリ構造は以下の通り。
◇整形対象のphpファイル
c:\_work\hogehoge.jp\webapp (この下は懐かしのmojavi3のディレクトリ構造)
再帰的にディレクトリをたどるので下のディレクトリ構造はどうなっていても構わない。
hogehoge.jpは私が勝手につけたプロジェクト名。
◇php beautifierを起動するバッチファイルその他。
c:\_work\hogehoge.jp\lib\util\pb.bat(自作バッチファイル)
c:\_work\hogehoge.jp\lib\util\data\php_beautifier(pearのパッケージに付属のファイル*1)
c:\_work\hogehoge.jp\lib\util\data\lisences\pear.txtなど(整形後のphpファイルの先頭に追加するためのライセンス)
c:\_work\hogehoge.jp\lib\util\beautified(整形後のphpファイルが出力されるディレクトリ。空のディレクトリを作成。元ファイルのディレクトリ構造を再現します)
*1
http://pear.php.net/package/PHP_Beautifier/download からダウンロードする 。
展開したファイルのscriptsディレクトリ直下に入っているファイル。
バッチファイルの中でディレクトリ指定さえすればどこにあってもいいです。
そもそも、php_beautifierをどこにインストールするか、ということですが、xammpなら、 C:\xampp\php\PEARの下にPHPというフォルダを作って、そこに展開したファイルをそのまま置けばよいです。この場合、 C:\xampp\php\PEAR\PHP\Beautifier.php になります。
ちなみに、私は、c:\_work\hogehoge.jp\lib\util\pear\PHP\Beautifier.phpに入れています。プロジェクトに必要なものが入っている方がポータブルな感じがするので。
で、これが最後の追記。ファイルへのリンクをしておきました。
@ECHO OFF
ECHO bootstrap Php_Beautifier
SET phpCli=C:\xampp\php\php.exe
SET pbFile=data\php_beautifier
SET liFile=data/licenses/bsd.txt
@ECHO ON
“%phpCli%” -f “%pbFile%” — -r -f ../../webapp/*.php -o beautified/ -s4 -l “Pear(add_header=%liFile%,newline_class=TRUE,newline_function=TRUE)”
バッチファイルがおかれたディレクトリには、dataフォルダがあり、php_beautifierというダウンロードしたPHP_Beautifierのアーカイブに含まれるファイルと、同じくアーカイブに含まれるlicensesフォルダが入れてあります。
-fは整形対象ファイルです。
-rは-fで指定したファイルを起点に、それ以下のディレクトリを再帰的にたどることを示しています。
-oは整形後ファイルの出力フォルダです。再帰的に実行する場合は、もともとのディレクトリ構造は保存されます。
-s4はインデントを空白4文字とするオプションです。
-lはフィルタに関するオプションです。今回はpearコーディングスタンダードが適用されるようになっています。
詳しくは http://beautifyphp.sourceforge.net/docs/ を見て下さい。また、オプションの書式はこちらのコマンドで確認できます。
“%phpCli%” -f “%pbFile%” — –help
まとめると、こちらのバッチファイルの整形オプションは、インデントはスペース4文字、各ファイルの最上部に指定したライセンスファイルをそのまま挿入、クラス定義の後の中括弧は改行してから行頭に、それ以外(ifなど)の中括弧は改行なしで行末に、というものです。
もし、pearへのパスが通っていない場合には、dataフォルダに入れたphp_beautifierファイルの一番上の行でパスを通して見て下さい。これは、dataフォルダと同一階層にpearフォルダがあって、その中にpearのパッケージ群が入っている場合のコードです。
ini_set(“include_path”,
dirname(dirname(__FILE__)) . “/pear” . PATH_SEPARATOR . ini_get(‘include_path’));
以上で、他人がどうあれ、自分が使うときには自分好みにコードを整形して作業を行う、ということが簡単にできます。後は、他人にもこのやり方を採用してもらえると、自分のインデントにストレスを感じることがなくなってグッドなのではないかと思うのでした。