Dependency Injection – problém (možná jsem ho úplně nepochopil)
- Xchos
- Člen | 40
Ahoj,
udělal jsem si vlastní (nevím proč ale vyhovuje mi to víc), Logger a
Authorizator na práva.
Vyhovuje mi totiž na mojí aplikaci schéma
- create
- edit
- delete
- access
a to nevím jak bych přes ten v Nette přesněji dělal.
Mám následující problém:
Můj presenter:
public function startup() {
parent::startup();
$this->db = $this->context->{'dibi.connection'};
$user = self::getUser();
$this->authorizator = new Authorizator($this->db, $user->id);
$this->logger = new Logger($this->db);
Můj model Pro authorizátor má tento konstruktor:
class Authorizator extends Base {
protected $userID = NULL;
public function __construct(\DibiConnection $connection, $userID)
{
parent::__construct($connection);
$this->userID = $userID;
}
Otázka zní: Mám to správně vyřešené? Mě se nezdá to dotazování na context v presenteru a předávání do modelu. Doufám že mě za můj přístup nebudete Hejtovat, rád bych se něčemu přiučil :)
//edit
ještě mi napadlo že by to měla být asi komponenta a né model co?
Editoval Xchos (12. 6. 2015 21:57)
- Oli
- Člen | 1215
@Xchos tady máš jak si vytvoříš službu: Vlastní služby. a v získávání závislostí jak tu službu získáš v presenteru, komponentě, jiné službě, kdekoli…
- Xchos
- Člen | 40
Oli napsal(a):
@Xchos tady máš jak si vytvoříš službu: Vlastní služby. a v získávání závislostí jak tu službu získáš v presenteru, komponentě, jiné službě, kdekoli…
Moc děkuju za pomoc, službu jsem zvládl udělat správně bez pomoci, včetně získání závislostí – už jsem se s tím setkal u továrniček na formuláře. Do presenteru injectuji takto:
/** @inject @var \App\ServiceName */
private $serviceName;
Vše funkční, problém vyřešen, děkuji za ochotu a popostrčení :)