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