内容
- PhpStorm で Composer を使ったプロジェクトを作りたい
- CakePHP のテストを PhpStorm の標準機能で実行したい(こっちは普通に unok さんのIntelliJ IDEA から cakephp の test を実行する方法(PhpStorm でも多分大丈夫)を読んだ方がいいかも)
書いてる人
- 昔 PHP やってて久しぶりに触ったけど(当時使ってたのは Zend) CakePHP はドキュメント読んでチュートリアルやったくらいの初心者
- 普段は強いていえば python の人なので Composer とか使ったことない
環境的なもの
- Mac OS X 10.9.4
- PhpStorm 7.1.3
- PHP 5.4.24
- Composer (PhpStormの設定画面でダウンロードしたのでバージョン分からん)
- PHPUnit 3.7.37
- CakePHP 2.5.3
PhpStorm で Composer を使ったプロジェクトを作りたい
Composer 自体は PhpStorm の環境設定の PHP -> Composer でダウンロードしておく。
あとは新規プロジェクト作るときのプロジェクトタイプで Composer project を選んで cakephp/cakephp を入れておけばおk。(OSX 10.8/10.9 で mcrypt.so 入れてなくてエラーになる場合は http://topicdesk.com/downloads/mcrypt のパッケージでインストールが楽でした)
あとは yukisov さんの Composerを利用したCakePHP2.4.xの導入手順 を参考にすればきっとなんとかなります。
以下のような composer.json を作って環境設定のとこでこのファイルを指定。以下は yukisov さんのをコピペしてバージョンあげただけですけど repositories とかいるのかよく分かってません。ポイントは PHPUnit を 3.7台にすること。PhpStorm だと PHPUnit4 に対応してないっぽいので。
{
"name": "namwa",
"repositories": [
{
"type": "pear",
"url": "http://pear.cakephp.org"
}
],
"require": {
"cakephp/cakephp": "2.5.3",
},
"require-dev": {
"phpunit/phpunit": "3.7.37",
"cakephp/debug_kit" : "2.2.*"
},
"config": {
"vendor-dir": "Vendor/"
}
}
ただこの composer.json の通りにライブラリをインストールする PhpStorm 的な方法がいまいち分からないのでとりあえず Tools -> Composer -> Add dependency... で PHPUnit インストールしたりすれば反映されます(ただ PHPUnit は当然 require-dev から require にうつっちゃう)。もっとまともなやり方多分ありますよねこれ。。素直にコマンドラインでインストールすべきなのかな。
CakePHP のテストを PhpStorm の標準機能で実行したい
ブートストラップというか1つスクリプトをはさまないと自分の使ってるバージョンでは PhpStorm からテストが実行できませんでした。具体的には以下を使いました。
これをプロジェクトの一番上に置きます。上の yukisov さんのやり方に合わせたディレクトリ構造にしてるのでこうなります。
- プロジェクトのディレクトリ
- App
- Test
- Plugin
- Vendor
- cakeunit4phpstorm.php
- App
ただこれだとなんかうまく動かなかったので、定数をセットしている部分についてブラウザから実行した時にデバッグツールバーに表示されるものと合わてみました。cakeunit4phpstorm.php を4行修正します:
# あとは34行目をこうして
define('APP_DIR', 'App');
# 37行目をこうして
define('WEBROOT_DIR', 'webroot');
# 40行目をこうして
define('WWW_ROOT', ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS);
# 44行目をこう!
ini_set('include_path', ROOT . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
あとは Run/Debug Configurations で PHPUnit を選び、
設定項目 | 値 |
---|---|
Directory | Appディレクトリへのパス |
Test Runner options | Test/Case/AllTestsTest.php |
Interpreter options | -f cakeunit4phpstorm.phpへのパス |
を設定すれば PhpStorm でテストが実行できると思います。
終わりに
このポストを書きながら unok さんの一年以上前に書かれた IntelliJ IDEA から cakephp の test を実行する方法(PhpStorm でも多分大丈夫) という記事を見つけました。試してないけど最初からこの記事読めば良かった説…まあ自分のはこういうやり方もありましたということで。。
そして書きながら PhpStorm 8 だと Behat という BDD フレームワークのサポートが入るらしいことを知りました。いい加減 PHPUnit 以外も使ってみないとなあ…