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(); }