vendredi 28 juin 2019

Laravel Virgin: Inject a Model In Controller as Dependency

In my inherited code in the Models there's some serious logic and I want to use the Laravel's Dependencuy Injection in order to load the mkodels as Dependencies into the controller instead of Using the Laravel's provided Facades.

So here's a sample Controller:

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return View
     */
    public function show($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}

But Instead of using the Facade User I want to be able to load it as dependency into the controller:


namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;
user App\Models\User

class UserController extends Controller
{

     /**
     * @var User
     */
     private $user=null;

     public function __construct(User $user)
     {
       $this->user=$user;
     }


    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return View
     */
    public function show($id)
    {
        return view('user.profile', ['user' => $this->user->findOrFail($id)]);
    }
}


The reason why I want to do that is because I come from Symfony Background where the Dependency Injection Pattern Is heavily Erdosed. Also Dependency Injection is the Unit Test's best buddy, so I want to be able to unitilize the Dependency Injection that I am familiar with.

So I wanted to know whether I can inject the models where the logic exists in the Controllers Instead of using the Facade Pattern provided by laravel.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire