Ako nastavit config a vyhnut sa Factory
- David Ďurika
- Člen | 328
Zdravim,
nikde som cital ze je lepsie nepouzivat factories, uz teraz aj viem preco
narobilo mi to problemy
mam triedu autopilot kt. ma metodu addTask(), metoda by mala vracat instanciu \Service\Task\TaskSerivce lenze problem je v tom ze, config vyzera takto:
services:
model: @doctrine.entityManagers.default
autopilot:
class: Service\Autopilot\Autopilot
factories:
taskService:
parameters: [entity]
class: Service\Task\TaskSerivce(@model, %entity%)
otazka je: ako v metode addTask() ziskam instanciu na tu Service\Task\TaskSerivce, kedze v nej nemam context cize neviem zavolant tu factory taskService
neviem ci som sa vyjadril pochopitelne, snad ano…
Editoval achtan (10. 10. 2012 15:47)
- Filip Procházka
- Moderator | 4668
Nejsem si jistý o co se snažíš, ale ty továrničky zoufale vřískají „pomóc! chce mě znásilnit!“
services:
model: @doctrine.entityManagers.default
autopilot: Service\Autopilot\Autopilot
taskService: Service\Task\TaskSerivce(@model)
Plynule pokračuj na doporučené čtení
Editoval HosipLan (10. 10. 2012 16:33)
- David Ďurika
- Člen | 328
ide o to ze tie service sme navrhli tak ze servica nemoze existovat bez entity a kazda entita ma vlastnu instanciu servici… v tom to cele viazne…
ale ako tak pozeram ten clanok tak to je asi riesenie, ze sa do autopilota preda factory na taskService
services:
model: @doctrine.entityManagers.default
autopilot: Service\Autopilot\Autopilot(@taskServiceFactory)
taskServiceFactory: ServiceFactory(@model, '\Service\Task\TaskService')
Editoval achtan (10. 10. 2012 16:47)
- Filip Procházka
- Moderator | 4668
achtan napsal(a):
ide o to ze tie service sme navrhli tak ze servica nemoze existovat bez entity a kazda entita ma vlastnu instanciu servici… v tom to cele viazne…
Důležité je, že teď už víte, jak to nedělat :)
- David Ďurika
- Člen | 328
Riesenie
services:
model: @doctrine.entityManagers.default
autopilot: Service\Autopilot\Autopilot(@taskServiceFactory)
taskServiceFactory: Extras\Service\ServiceFactory(@model, 'Service\Task\TaskService')
<?php
namespace Extras\Models\Service;
class ServiceFactory extends \Nette\Object {
public $model;
public $serviceName;
public function __construct(\Doctrine\ORM\EntityManager $model, $serviceName) {
$this->model = $model;
$this->serviceName = $serviceName;
}
public function create($entity) {
$serviceName = $this->serviceName;
return new $serviceName($this->model, $entity);
}
}
?>