Search code examples
phplaravelclasscontrollerphpstorm

Illuminate\Routing\Controller or App\Http\Controllers\Controller


I'm new to PHP, using PhpStorm. I have a doubt, which is the difference between using

Illuminate\Routing\Controller 

and

App\Http\Controllers\Controller 

I want to pass an API but whenever I have to decide which route for the Controller class import I doubt on the difference.

Can anyone explain me?

enter image description here


Solution

  • Illuminate\Routing\Controller is the controller class in the framework. App\Http\Controllers\Controller is the one in your project which extends framework's controller. If your controller has override methods or some base methods that you prefer them to be available to other extended controllers such as;

    namespace App\Http\Controllers;
    
    use App\Traits\DateTime\DateTime;
    use App\Traits\Partner\PartnerDetail;
    use App\Traits\Redirect\RedirectRoute;
    use Illuminate\Foundation\Bus\DispatchesJobs;
    use Illuminate\Routing\Controller as BaseController; // this is in the framework
    use Illuminate\Foundation\Validation\ValidatesRequests;
    use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
    
    class Controller extends BaseController
    {
        // Laravel Traits
        use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
    
        // Project Traits
        use RedirectRoute, DateTime, PartnerDetail;
    
        public function someCommonMethod()
        {
            // 
        }
    }
    
    <?php
    
    namespace App\Http\Controllers;
    
    class DashboardController extends Controller
    {
        public function index()
        {
            $this->someCommonMethod();
        }
    }
    

    If you don't have anything special in your App\Http\Controllers\Controller then you may go with Illuminate\Routing\Controller