我正在使用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');
});
我无法弄清楚发生了什么 - 我试过玩,让父类非抽象等等 - 谷歌没有帮助。有什么想法吗?
答案 0 :(得分:3)
找出原因。 ChunkletAPI->__construct()
必须设为public
,不受保护。否则,它将Laravel视为静态类。