laravel中,我在父類別中註入一個物件,然後我想根據不同的子類別注入這個物件的不同實作,有什麼方法嗎?

WBOY
發布: 2023-03-01 20:48:02
原創
991 人瀏覽過

我在父類別中註入一個物件,然後我想根據不同的子類別注入這個物件的不同實作.

因為父類別就要用這個物件,所以我不能在子類別中在註入,但是我需要不同的實作.

我控制注入的程式碼:

laravel中,我在父類別中註入一個物件,然後我想根據不同的子類別注入這個物件的不同實作,有什麼方法嗎?

這樣寫不行,因為物件在父類別中就注入了,父類中註入的地方:

laravel中,我在父類別中註入一個物件,然後我想根據不同的子類別注入這個物件的不同實作,有什麼方法嗎?

回覆內容:

我在父類別中註入一個物件,然後我想根據不同的子類別注入這個物件的不同實作.

因為父類別就要用這個物件,所以我不能在子類別中在註入,但是我需要不同的實作.

我控制注入的程式碼:

laravel中,我在父類別中註入一個物件,然後我想根據不同的子類別注入這個物件的不同實作,有什麼方法嗎?

這樣寫不行,因為物件在父類別中就注入了,父類中註入的地方:

laravel中,我在父類別中註入一個物件,然後我想根據不同的子類別注入這個物件的不同實作,有什麼方法嗎?

方法1:不要在父類別的 action 方法中直接注入實例,父類別從別的方法取得相關實例,子類別重寫這個方法並傳回自己注入的實例。例如:

父類:

<code class="php">public function update()
{
    $this->validate($this->getRequest(), ...);
}

protected function getRequest()
{
    return app(Request::class);
}</code>
登入後複製

子類:

<code class="php">protected function getRequest()
{
    return app(RoleRequest::class);
}</code>
登入後複製

方法2:使用 trait 。

方法3:在 __construct 中註入。類似方法1,父類別的 __construct 不依賴任何參數,子類別的 __construct 隨意依賴。

為什麼要設計成這個樣子?

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板