我开始了解Laravel 5存储库模式,我无法得到任何正确的!我可能使用了错误的命名空间或“使用”;这是我得到的错误:Class App\Http\Controllers\ServiceController does not exist
这位是我的财务总监:
namespace App\Http\Controllers;
namespace Repo;
use App\Http\Controllers\Controller;
use Repo\ServiceRepository;
class ServiceController extends Controller {
public function __construct(ServiceRepository $service){
$this->service = $service;
}
public function showServices()
{
$services = $this->service->getAllServices();
return view('services', compact('services'));
}
}这是存储库:
class ServiceRepository {
public function getAllServices(){
return \App\Service::all();
}
}我的路线是:
Route::get('/services', 'ServiceController@showServices');我尝试更改了一些名称空间,但最后出现了更多的错误:/
发布于 2015-08-01 11:16:11
您必须阅读一下PHP中的名称空间。
如果您的ServiceController位于app/Http/Controllers目录中,则代码必须如下所示:
<?php
namespace App\Http\Controllers;
use Repo\ServiceRepository;
class ServiceController extends Controller
{
public function __construct(ServiceRepository $service)
{
$this->service = $service;
}
public function showServices()
{
$services = $this->service->getAllServices();
return view('services', compact('services'));
}
}注意,我删除了namespace Repo和第一个use语句。
类必须只有一个名称空间,所以我删除了第二个Repo命名空间。
名称空间非常简单。在大多数情况下,类的命名空间只反映到该类的路径。在您的示例中,它是App\Http\Controllers,因为控制器可能位于app/Http/Controllers目录中。
我删除了use App\Http\Controllers\Controller,因为您的ServiceController和App\Http\Controllers\Controller位于同一个目录中,所以它们位于同一个名称空间中。当两个类位于同一个名称空间中时,不需要有名称空间的完整路径才能相互访问。
希望这能帮上忙。
https://stackoverflow.com/questions/31761019
复制相似问题