目标类不可实例化

时间:2013-09-15 17:23:46

标签: php laravel laravel-4

我正在使用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');
});

我无法弄清楚发生了什么 - 我试过玩,让父类非抽象等等 - 谷歌没有帮助。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

找出原因。 ChunkletAPI->__construct()必须设为public,不受保护。否则,它将Laravel视为静态类。