窓にphp開発環境つくる
開発環境といえば、デバッグ、テストできて当たり前。
ソース管理はgitかsvnだけどこれはどのプログラミング言語でも一緒だから割愛。
Apacheいれるのめんどくさいので
php5.4 の Built in web server を使う。
http://d.hatena.ne.jp/nowokay/20120531
ぬこびーんでできるし
IntelliJ IDEA でもできるんじゃね?
ってことでIDEは使い慣れた(い)IntelliJ IDEAで。
■phpのインストール
http://memorva.jp/memo/windows/php.php
ZIP版のほうがありがたいのでZIP版で。
2012/10/02 時点でもインストーラーはないっぽい。
C:\opt\php として展開。
環境変数に PATH=$PATH;C:\opt\php を設定。
→Rapid EE が便利だよ!
コマンドラインで php -v でパス通ればOK。
■IntelliJ IDEA でプロジェクト作成
PHP Module があると思ってたけどなかった・・・。
Web Module にして Empty module で Finish.
File -> Settings の PHP で
PHP language level : 5.4
Interpreter で ... を押下して + で
C:\opt\php を指定したインタプリタを選択。
もちろんphp5.4ね。
PHP -> Servers も設定しておく。
Name は適当、Hostはlocalhost、Portは80、DubuggerはXdebugで追加。
Settings は OK にして Editor に戻る。
Edit Configurations で
PHP Built-in Web Server を設定。
Hostはlocalhost、Portは80、DocumentRootはプロジェクトフォルダでOK。
ついでに PHP Web Application で Server(PHP -> Servers で追加したやつ)、
Start URL、Browserを設定しておく。
PHP Built-in Web Server で作成した設定を実行すれば
PHP Built-in Web Server が起動する。
適当なスクリプト(phpinfo()とか)を作って
PHP Web Application で作成したい設定を実行すれば
ブラウザが立ち上がって参照できる。
■xdebugのインストール
デバッガー。
http://keicode.com/cgi/introducing-xdebug.php
phpinfo(); なスクリプトで DebugBuild が no になっているかを確認。
※no になってないときはわかんない。php.ini さわるかんじ?
php5.4 なので http://www.xdebug.org/download.php から
PHP 5.4 VC9 (32 bit) をDLした。環境にあわせてね。
あと、TS ってなに?こっちの dll だとダメでした。
php.ini に
zend_extension="C:\opt\php\ext\php_xdebug-2.2.1-5.4-vc9.dll"
を追記。
参考サイトにあるように zend_extension_ts としたけどダメでした。
php.ini の場所は Loaded Configuration File で。
C:\opt\php\php.ini-development をコピって php.ini を作った。
ここに上記の内容を追記してサーバ再起動。
IntelliJ IDEA上でブレークポイントを設置してデバッグ実行、
ブラウザを表示しようとしたらちゃんとデバッグできた。
※2012/10/06 02:56:01 追記
これだけだとうまくデバッグできないですね。
できなくなって、このメモを見返して気付きました。
リモートデバッグもうまくやったらできるんでしょうがそれはまだ調べてません。
再生マークみたいなアイコンの左くらいにあるプルダウンから Edit Configuration を選択して、
Run/Dubug Configurations 画面で +(追加) を押して
Server は Settings -> PHP -> Servers で登録してる localhost、start URL を / とか適当なもの、Browser も適当なものを選択してOK.
あとはデバッグするだけでブラウザで start URL が立ち上がってパラメータにそれっぽいのが確認できます。
もし / とかが静的ファイルだったらPHPスクリプトが動くところに移動するとCookieにXDEBUG~ってキーバリューが保存されるのでこれでパラメータなしでもデバッグで止まるようになります。
なんかもっとうまいやり方あるんだろうなって思いながらとりあえずデバッグできるのでまたやりたいことが次のステップにむいたときに調べます。
もし教えてくれると嬉しいです。
参考
http://www.jetbrains.com/idea/webhelp/php-debugging-session.html
■pearのインストール
ライブラリ管理ツール。
これはやらなくてもいいんだけど
phpunitを手で入れようとしたら失敗したからこれで。
窓のpearはめんどかった。
UNIX系は楽なんかな。
知らん。
http://d.hatena.ne.jp/takeru-c/20110912/1315796049
で、このとおりやって pear のインストールはOKなんだけど、
pear 経由でライブラリを入れようとすると
PEAR_Config::writeConfigFile fopen('C:\Windows\pear.ini','w') failed (fopen(C:\W
indows\pear.ini): failed to open stream: Permission denied)
になる。
ちゃんと回避したはずなのに。
http://www.glamenv-septzen.net/view/40
結論:PHP_PEAR_SYSCONF_DIR 環境変数を設定せよ。
とあるように環境変数を設定すればいいみたい。
PHP_PEAR_SYSCONF_DIR=C:\opt\php\pear\
として設定。
このあたりの詳細は上記サイトでちゃんと説明してくれてる。
とりまこれでOK。
■PHP Unit のインストール
http://www.atmarkit.co.jp/fcoding/articles/phptest/02/phptest02a.html
とりあえず pear 叩いてインスコした。
それっぽいのができた。
※2012/10/03 19:13:37 追記
File -> Settings の PHP で
Include path に C:\opt\php\pear みたいにパスを指定しないと
PHP Unit の補完ができないので指定しとく。
■PHP Unit をIntelliJ IDEA から
さあ テストドリブンに開発すっぞ!
ってことでIDEかららくらくテストコード生成してゴリゴリできるようにする。
Edit Configurations から PHPUnit を作成。
※PHPUnit on server ってなに?状態です・・・
http://www.jetbrains.com/idea/webhelp/run-debug-configuration-phpunit.html
Direcotory は test ディレクトリをプロジェクト配下に作成。
PHP Unit では Skeleton Generator でスケルトンクラスを出力するみたいで
PHP Unit とは別モジュールでSkeleton Generator が配られているみたいです。
http://www.jetbrains.com/idea/webhelp/generating-phpunit-test-class.html
上記サイト内のリンクに http://www.phpunit.de/manual/3.6/en/skeleton-generator.html へのリンクがあって
これをみながら pear を叩いて Skeleton Generator をインストールした。
File -> Settings で PHP -> PHPUnit -> Skeleton Generator で
Use Skeleton Generator を チェックして、
pear config-show で bin_dir の値 C:\opt\php\pear を
Path to phpunit-skelgen として設定。
これで準備万端と思いHTML内にphpスクリプト埋め込んだコードで張り切って
CTRL + SHIFT + T おしても無反応。
右クリック -> Go To -> Test がグレーアウト。
ダメじゃん。
設定間違えたかな?と思ってもあってる気がする。
ためしに PHP File じゃなく PHP Class を新規作成して
有効なスクリプトステートメントで CTRL + SHIFT + T 押したら
Go to Test... と書かれたウィンドウが!
OK して テストクラス名や出力ファイル名、出力ディレクトリを指定して OK.
生成されましたー。
で、(JSPでごりごりViewにロジック書くような汚い)テンプレートに記述したスクリプトは
さすがにテストできないのかな。
WebUnit的なもの?でノード解析とかしちゃう系?
とりま、ここまで。
0 件のコメント:
コメントを投稿