samedi 22 octobre 2016

Avoiding Constructor Dependency Injection in trait

I have a trait and that trait is being used in controller. In this way, many functions of trait are being used in Controller. Controller is extending a Base Controller. Controller and BaseController already have their constructor.

Due to some reasons, I need constructor in trait also because I needed Constructor dependency Injection in trait. Now, when I place constructor in trait, constructor does not execute.

In order to overcome this problem, I saw SendsPasswordResetEmails trait at this location \vendor\laravel\framework\src\Illuminate\Foundation\Auth\SendsPasswordResetEmails.php. You will see there is function called broker in this trait which returns a contract. In this way, they did not need Constructor Dependency Injection because they are getting Contract from the broker function

I already have a ServiceProvider which looks like below.

class RoleServiceProvider extends \Illuminate\Support\ServiceProvider {

    public function register() {
        $this->app->bind(
            'App\Architecture\Contract\Role\IRole', 
            '\App\Architecture\Database\Role\RoleDb'
        );
    }

    public function provides() {
        return ['App\Architecture\Contract\Role\IRole'];
    }
}

App\Architecture\Contract\Role\IRole is a Contract. \App\Architecture\Database\Role\RoleDb is a Database class

Question: Can you kindly tell how would I connect this Service Provide through Facade like it was done in SendsPasswordResetEmails trait to avoid Constructor Dependency Injection in trait ?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire