У меня есть черта и что trait
используется в контроллере. Таким образом, многие функции trait
используются в Controller
. Controller
расширяет базовый контроллер. Controller
и BaseController
уже имеют свой конструктор.Избегайте инъекции зависимостей конструктора в значении
По каким-то причинам, мне нужен конструктор в признаке также потому, что мне нужна интродукция Constructor Injection в trait
. Теперь, когда я помещаю конструктор в trait
, конструктор не выполняется.
Для решения этой проблемы я увидел SendsPasswordResetEmails trait
в этом месте \vendor\laravel\framework\src\Illuminate\Foundation\Auth\SendsPasswordResetEmails.php
. Вы увидите, что функция broker
в этом trait
, которая возвращает контракт. Таким образом, им не нужна инъекция конструктора, потому что они получают контракт от функции broker
.
У меня уже есть ServiceProvider
, который выглядит ниже.
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
является Договор. \App\Architecture\Database\Role\RoleDb
класс Database
Вопрос: Можете ли вы любезно сказать, как бы я подключить эту службу Предоставлять через фасад, как это было сделано в SendsPasswordResetEmails trait
избежать Constructor Dependency Injection в trait
?