Home > Tags > Eclipse

Eclipse

PHP用IDEの○と× その1 – PDT(Eclipse)

対象としたのはPDT2.1(Eclipse 3.5ベース)である。

PDTの◯

  • 無償
  • マルチプラットフォーム(Win, Linux, Mac)
  • 豊富なプラグインで自在に拡張
  • php5.3に対応
  • 日本語の情報やTipsが豊富

PDTの×

  • 関数名に日本語を使うとsyntaxエラーになってしまう。

これはPHPUnitを使ってテストケースを書く場合に問題となる。PHPUnitの場合

/**
*@test
*/

とメソッドのコメントに書けばメソッド名を”test”で始めなくてもテスト用メソッドと認識されるという機能を持つ。テスト用のメソッドの名前はどうしても長くなるので便利である。(NetBeans 6.7 Beta で PHPUnit – 逃走航路@hatena)P残念ながら今のところPDT(と上位版のZendStudio)では日本語のメソッド名をIDEが受け付けないのでこの機能が使えないということになる。

NetBeansの場合は下のようにエディタ中で日本語を入れても正しくIDE側で正しく認識してくれる。

 NetBeans IDE 6.7-1

NetBeans IDE 6.7-2

  • デバッガとしてZend Debuggerを選んだ場合はプロファイリングやコードカバレッジの機能は使えない。有償の上位版であるZend Studioを使う必要がある。(Zend Debugger, Xdebug, DBGを比較する ) この機能を使いたい場合はXdebugを使う。
  • 設定項目が非常に多くて複雑。エディタを使って開発していた人がPDTに移行する場合この部分でつまずいてしまうのでは。

その他

  • デバッガはXdebug,またはZendDebuggerが使用できる。かつてXdebug使用時には変数の中身の日本語が化けていたが現在は問題無し。(ここを参照。)
  • 数年前まではEclipseベースのPHP用IDEといえばPHPEclipseだったが、PDTがEclipseの公式プロジェクトになったことでその 立場は逆転したようだ。Web上の情報から判断するに、PHPのIDEとしては日本で恐らく最も広く使われていると思う。
  • PDT2.1はEclipse3.5ベースなのだが、矩形選択などの新機能は使えない。マークオカレンスなどEclipse3.4で追加された機能はPDT2.1でやっと使えるようになった。PDTの場合、機能の進化がEclipse本体の進化よりも1年遅れというのが残念。

※PDTについてはここが詳しい。

EclipseからPhingを使う

phingのタスクををantとしてラッピングしてみた。なんでそんなことをする必要があるのかと言えば、Eclipse(PDT / Zend Studio for Eclipse)からphingを使うためである。そしてなぜphingを使いたいかというと、Zend Frameworkを使用したプロジェクトの環境変数(production環境 or development環境)という情報を.htaccessやiniファイルにハードコーディングするのに違和感があるからである。こういう値はアプリケーション本体の上に位置するレイヤーで設定・コントロールするべきものだ。
phingをEclipseから使うためには外部ツールとしての登録などいくつか方法があるとは思うが、せっかく親戚のantが標準で入っているのだからそれを使わせていただく。phingのタスクをantのタスクでラッピングしてEclipse側からはantとして実行するわけである。ラッピングしているだけなので、Eclipseを使わずにコマンドラインから直接phingを実行することもできる。

事前準備:

-  phingをインストールする。(詳細は省略。)
- Zend Studio  for Eclipse(6.1系 or 7.0.0beta)を使用している場合、デフォルトではなぜかantがオフになっているのでちょっとした設定が必要。(PDTの場合は不要。)

設定方法:

1. メニューからNew(新規作成) => Other…(その他)を選ぶ。

090630 0009 150x150 EclipseからPhingを使う
2. Show All Wizardsにチェックを入れてから、Java => Java Project from Existing Ant Bundleを選びNext。

windows xp home edition 150x150 EclipseからPhingを使う
3. するとダイアログボックスが「Ant Developmentを有効にするか?」と聞いてくるのでOKを押す。新規作成そのものはキャンセル。これでAntが使えるようになる。

処理対象ファイル

application.php.distというファイルに環境関連の設定記述があるものとする。このファイルに対してphingで処理を行う。

application.php.dist
<?php
$paths = array(
    get_include_path(),
     '../library'
);
set_include_path(implode(PATH_SEPARATOR, $paths));
defined('APPLICATION_PATH')
    or define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

	defined('APPLICATION_ENV')
		or define('APPLICATION_ENV', '@ENVIRONMENT@');

				以下略

タスクの定義

1. phingの定義ファイルbuild.xml)を作成

build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="testphing" default="setappenv" >
    <property name="basedir" value="../" />
        <target name="setappenv">
		    <property file="ant.properties" />
		    <copy file="${basedir}/application/application.php.dist"
			tofile="${basedir}/application/application.php" overwrite="true">
			    <filterchain>
				<replacetokens begintoken="@" endtoken="@">
					<token key="ENVIRONMENT" value="${environment}" />
				</replacetokens>
			</filterchain>
		   </copy>
	  </target>
</project>

2. プロパティファイルを設定

ant.properties
phing=/Path/to/phing
environment=development

3. ラッパーであるantファイル(ant-build.xml)を作成

ant-build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="phing-wrapper" default="setappenv">
	<target name="setappenv" description="Set application environment from property file">
		<property file="ant.properties" />
		<exec dir="" executable="${phing}">
			<arg line="setappenv" />
		</exec>
	</target>
</project>

4. ant-build.xmlをAnt Editorで開き、antビューかoutlineビューにてタスクを選択し、 Run as => Ant buildと実行。

090630 0007 150x150 EclipseからPhingを使う

phingを実行するとapplication.php.distの中の@ENVIRONMENT@の部分が”development”に置換され、新たにapplication.phpとして作成される。アプリケーションはpublic/index.phpなどでapplication.phpをインクルードして以後の処理を行うことになる。

まとめ

たかが一個の変数を設定するためにphingを使うのはいかにも大げさだが、タスクを追加設定していけばテンポラリディレクトリの掃除/データのリロード / ユニットテスト実行 / ドキュメント生成 / 配布用アーカイブ作成 といった定型作業を自動で実行できるようになるので正確で迅速なリリースの助けになるだろう。

参考サイト
Zend Framework 1.8: Building MVC Web Applications
How to enable the Ant plugin in Zend Studio for Eclipse – Blog of Max Horvath
PHPUnit3で始めるユニットテスト:第5回 PHPUnitの便利な機能とPhingとの連携|gihyo.jp … 技術評論社

Home > Tags > Eclipse

アーカイブ

Return to page top