Laravel4、シンプルなコード補完コード
Laravel4にはIDEやエディター向きの補完コードが先を争って発表されています。
- IDE Helper
- 上記のNetBeansとPHPStorm用生成済みコード
- 上記のSublineとCodeIntel用生成済みコード
- PHPStorm Helper
- Sublime text helper
- PHPStorm helper
私はNetBeansユーザーで、既にNetBeansで動作すると言われているコード補完コードを使ってみましたが、動作しません。多分、NetBeansのオプション設定も関係しているのでしょう。
そして何より、面倒です。どうして面倒な事が好きなんでしょうね。
仕方がないので、結局自分で補完コード生成コードを作成しました。動作確認はNetBeansです。ですが、他のIDEやエディターに合わせ、改良するのも簡単です。とても単純なコードです。
routes.phpに付け加え、設定したルートにアクセスしてください。このコードの場合'/ccc'にアクセスすれば、生成コードが表示されます。お好きな場所へphpコードとして保存してください。
- /*
- * 製作者:Hirohisa Kawase
- * このプログラムの権利は放棄します。商業利用/非営利にかかわらず、自由に改変/配布可能です。
- * 製作者の名前を残す必要もありません。ライセンスを付け加えることも可能です。
- * 権利放棄日時:2013-05-30 日本時間
- */
- Route::get( '/ccc', function()
- {
- $aliasLoader = AliasLoader::getInstance();
- $aliases = $aliasLoader->getAliases();
- $outputLines = '<?php<br>';
- foreach( $aliases as $key => $fullNamespaceNotInUse )
- {
- $reflectionClass = new ReflectionClass( $key );
- if( $reflectionClass->hasMethod( 'getFacadeRoot' ) )
- {
- $instance = $key::getFacadeRoot();
- $reflectionClass = new ReflectionClass( $instance );
- }
- if( $reflectionClass->isInstantiable() )
- {
- $name = 'class '.$key.' extends '.$reflectionClass->getName().'{}';
- }
- elseif( $reflectionClass->isAbstract() )
- {
- $name = 'abstract class '.$key.' extends '.$reflectionClass->getName().' {}';
- }
- else
- {
- $name = '// not sure about '.$key.' Class';
- }
- $outputLines .= $name.'<br>';
- }
- return $outputLines;
- } );
やっぱり、コード補完はあるとないとじゃ雲泥の差ですね。便利だ。
修正
自動では100%上手く行きません。生成結果は多少自分で変更したほうが便利です。生成結果はドライバーの設定を反映しているものがあるため、自分の環境で生成したコードをもとに変更をかけたほうが良いでしょう。
以下は修正箇所の例です。
- // Guardクラスが良い
- class Auth extends Illuminate\Auth\Guard{}
- // Builderクラスが良い
- class DB extends Illuminate\Database\Database\Query\Builder{}
- // Factoryにはmakeが含まれているが、チェックの関数は含まれていない
- class Validator extends Illuminate\Validation\Factory{
- public function passes();
- public function fails();
- }