我正在使用 Laravel 5 代码。
我似乎无法扩展与子类具有不同命名空间的类。
我的父类是 文件夹是 App/Http/Controllers/
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
class MainController extends BaseController{
function __construct() {
}
function home() {
echo "main";
}
}
Run Code Online (Sandbox Code Playgroud)
我的子类是 文件夹是 App/Http/Controllers/Site
namespace App\Http\Controllers\Site;
class SiteController extends MainController {
function __construct() {
parent::__construct();
}
function home() {
return view('dashboard');
}
}
Run Code Online (Sandbox Code Playgroud)
我的路线文件有这条路线
Route::get('/', 'Site\SiteController@home');
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误
FatalErrorException in SiteController.php line 5: Class 'App\Http\Controllers\Site\MainController' not found
Run Code Online (Sandbox Code Playgroud)
这显然是命名空间的问题,因为当我这样做时
Route::get('/', 'Site\SiteController@home');
Run Code Online (Sandbox Code Playgroud)
它呼应了回家的方法 MainController
我如何让这个工作?
这不是 Laravel 5 的问题,而是常见的 PHP 命名空间问题。
有两种方法可以实现结果:
use语句:添加这一行use \App\Http\Controllers\MainController;class SiteController extends \App\Http\Controllers\MainController选择你更喜欢的方式。