Laravel 4 で小さな REST API を構築しています。アプリケーションで HMVC スキームを使用しています。問題は、API のコントローラーを呼び出そうとすると、PHP がクラスをインスタンス化できないと言うことです。
Target [App\Modules\ChunkletAPI\v1\ServerController] is not instantiable.
v1/controllers のクラス自体は次のとおりです。
<?php namespace App\Modules\ChunkletAPI\v1;
class ServerController extends ChunkletAPI {}
継承するもの
<?php namespace App\Modules\ChunkletAPI\v1;
use Controller;
abstract class ChunkletAPI extends Controller {
protected $name;
protected function __construct() {
$this->name = '\Model\ ' . str_replace('Controller', '', get_class($this));
}
public function index() {
$n = $this->name;
return $n::all();
}
}
ルーティングは次の方法で行われます。
<?php namespace App\Modules\ChunkletAPI;
use \Illuminate\Support\Facades\Route;
Route::group(array('prefix' => 'api/v1'), function()
{
Route::resource('server', 'App\Modules\ChunkletAPI\v1\ServerController');
});
何が起こっているのかわかりません-遊んでみたり、親クラスを非抽象化するなどしてみました-Googleは役に立ちません。何か案は?