Autowiring a abstract class

Fires
Člen | 89
+
0
-

Zdravím, jaký je správný způsob předání parametru přes autowiring v tomto schématu.

class XMLFacade extends XMLRepository{
	private $objectFactory; // ObjectFactory
}

abstract class XMLRepository extends XMLApi{
	..
	..
	..
}

abstract class XMLApi{
	private $xmlUser;
	private $xmlPass

	public function __construct($xmlUser,$xmlPass){
		$this->xmlUser ...
		...
	}
}
parameters:
	xmlUser: "xxxxxxUser"
	xmlPass: "xxxxxxPass"

Třídu XMLApi rozšiřuje více XMLRepository (PhotoXmlRepository, UserXmlRepository etc.), ale jednotlive Facade pak použivají různe factory. Jak to zapsat správně do konfigurace? Nebo je nutné skutečně v Facade přepsat konstruktor a předat to pak do parrenta ? A v configu pak XMLFacade: XMLFacade(_ ,%xmlUser%,%xmlPass%)? Pokud bych tam chtěl více Factories musel bych do konfigura dávat více a více zástupných znaků pro autowire.

Předem díky za pomoc.

MajklNajt
Člen | 470
+
0
-

V tomto prípade by si nemal používať dedičnosť ale dekorovanie. Čiže v konštruktore každej Repository si vyžiadaj XMLApi, v konštruktore každej Facade si vyžiadaj potom potrebné Repository, atď.

MajklNajt
Člen | 470
+
0
-

…a teda nebudú to abstraktné triedy, a všetky zaregistruješ do configu, aby ti fungoval autowiring

Fires
Člen | 89
+
+1
-

Ok děkuji, přišlo mi to takto elegantnější protože pak stačí pracovat s facade která mi zastřešuje práci s celým api. A nemusím pak deklarovat všechny funkce z repository i v facade. Kdy pak jen vlastně předává dotaz a odpověď.

Editoval Fires (21. 5. 2022 9:01)