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

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

WBOY
WBOY原創
2016-12-01 00:56:21943瀏覽

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

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

我控制注入的程式碼:

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 隨意依賴。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn