NetBeansでLaravel開発

タグ: Laravel3   PHP   PHPUnit   NetBeans  

NetBeansでLaravelの開発環境を整えましょう。

コード補完

コード補完を完全に行う方法はありません。NetBeans自身がいつでもコードを補完してくれるわけでないからです。特に無名関数の引数には全く働きません。無名関数を多用するコーディングスタイルが増えてきていることに、まだ完全に対応できていないようです。

とはいえ、通常のエディターや他のIDEに比べると、平均点以上の補完を行なってくれます。かなり賢いです。

さて、Laravelを含め最近のPHPフレームワークで補完が難しいのは、実行時に動的に短い別名に割りつけるようにする仕組みを取っているものが増えてきているからです。これはクラスを長々と名前空間まで含め記述する手間を省いてくれます。その点は良いのですが、自動的にコード補完が効かなくなってしまいます。

そこで補完のため、補完用のPHPコードを使用します。これは短い名前と名前空間を含めた長い名前を結びつけることで、NetBeansにその関係を教えてあげるためのものです。

いちいち手で書いていては大変ですから、生成プログラムを用意しました。コードは長いですので、githubのコード、ccc.phpをご覧ください。

このccc.phpはLaravelのコマンドツールartisanのコマンドとして動作します。application/configの設定内容に従い、生成する結果を多少変えています。これは、Laravelがドライバー駆動を取っているクラスが複数存在し、それらのクラスでは、使用できるメソッドが多少異なるためです。

生成するコードを確認するためには:

php artisan ccc

コードを保存するには

php artisan ccc:save

この、ccc.phpのコード中に$footerで多くのコメントを含めています。これは、PHPUnitのアサーションの補完のためです。

PHPUnitのアサーションの補完のためには、手法が2つあります。一つはccc.phpに含める方法です。もうひとつは、NetBeansのプロジェクトのプロパティを開き、インクルードパスにPHPUnitのframeworkディレクトリーを指定する方法です。

NetBeansを起動した時、プロジェクトに関連したファイルを全部パースします。そのため、多少の時間が取られます。ccc.phpに含める方法のほうが、多少はパースが早いようです。しかし、assertThat()内で使用できるアサーションに対する補完が動作しません。インクルードパスで指定する方法は、パースに多少長く時間がかかりますが、全てのアサーションに対して補完が動作します。

テスト環境

NetBeansからPHPUnitを利用した単体テストを実現する場合、手法は二つ存在します。

一つはブートストラップコードをプロジェクトで指定する方法です。プロジェクトのプロパティ、PHPUnit項目で指定します。テストのブートストラップコードはlaravel/cli/tasks/test/phpunit.phpですが、このファイルを直接指定すると、テスト実行時にエラーになります。そこでartisanのファイルが存在するのと同じトップディレクトリーに、一度コピーし、このコピーを指定してください。これで、テストが実行できるようになります。

もうひとつの方法は、PHPUnitの設定ファイルであるphpunit.xmlを指定する方法です。内容については、以下の記事をご覧ください。

PHPUnitで直接Laravelの単体テストを行う

こちらも、artisanファイルが存在するトップディレクトリーに作成します。その後、プロジェクトのプロパティを開き、作成したphpunit.xmlファイルを指定します。

おすすめは後者の方法です。

カバーレージ

カバーレージを取りたい場合、そのままですとプロジェクト全体が対象となります。それにはコアファイルなども含まれているため、正しいパーセンテージは取得できません。

そこで、前述のphpunit.xmlファイルを使用し、カバーレージ対象を指定してください。これにより、あなたが作成した部分のみ、カバーレージの対象に指定できます。

エラー表示の回避

Laravelのコアの中にはphpの拡張子を持ちながら、正しいphpファイルでないものが存在しています。コード生成時のテンプレートの役割をするファイルです。Laravel 3.2では、laravel/cli/tasks/migrate/stab.php一つです。Laravel 4になりますと、生成機能の増強に従い、同じようなファイルが増えます。

NetBeansの次期バージョンである7.3になりますと、下層に文法エラーが存在するファイルが存在する場合、エラーの赤いマークが上層の全フォルダーアイコンにも付きます。一つでもエラーを生ずるファイルが存在していますと、プロジェクトに赤いマークが表示されることになります。

これはとても、邪魔くさいですから、止めましょう。NetBeansのプロジェクトのプロパティ、除外フォルダーの指定で、指定するフォルダーはパースの対象外になり、エラーになる箇所を含んでいても、エラー表示されなくなります。これを利用しましょう。

テンプレートの活用

NetBeansには新規ファイルを作成する場合のファイルテンプレートと、スニペットを定義するコードテンプレートが用意されています。どちらも高機能です。

好みに合わせ、利用するとコーディングが早くなります。