Laravel 5 类继承

dev*_*ren 4 php

我正在使用 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

我如何让这个工作?

Hie*_* Le 5

这不是 Laravel 5 的问题,而是常见的 PHP 命名空间问题。

有两种方法可以实现结果:

  • 使用use语句:添加这一行use \App\Http\Controllers\MainController;
  • 使用完整的命名空间:将您的行更改为 class SiteController extends \App\Http\Controllers\MainController

选择你更喜欢的方式。