0

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

我无法弄清楚发生了什么——我试过玩弄,使父类非抽象等——谷歌也无济于事。有任何想法吗?

4

1 回答 1

3

找出原因。ChunkletAPI->__construct()必须设置为public,不受保护。否则,它在 Laravel 看来就像一个静态类。

于 2013-09-15T17:55:36.133 回答