我有一個特點,並且trait
正在控制器中使用。這樣,在Controller
中使用了trait
的許多功能。 Controller
正在擴展一個基礎控制器。 Controller
和BaseController
已經有它們的構造函數。避免構造函數依賴注入特性
由於某些原因,我還需要構造函數,因爲我需要構造函數依賴注入trait
。現在,當我將構造函數放置在trait
中時,構造函數不會執行。
爲了解決這個問題,我在這個位置看到了SendsPasswordResetEmails trait
\vendor\laravel\framework\src\Illuminate\Foundation\Auth\SendsPasswordResetEmails.php
。您會看到在此trait
中有一個稱爲broker
的函數,它返回一個合約。通過這種方式,他們不需要構造函數依賴注入,因爲他們從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
是一個數據庫類
問題:你能不能請你告訴我將如何連接此服務提供者通過門面就像是在SendsPasswordResetEmails trait
做是爲了避免在trait
構造函數依賴注入?