Генератор заводским методомPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Генератор заводским методом

Сообщение Anonymous »

У меня проблема с правильным расположением сервисов. Я хочу создать генератор, который благодаря провайдеру будет создавать соответствующий объект-генератор через фабричный метод. На мой взгляд, это выглядело бы примерно так:
Запрос API с поставщиком -> GeneratorController::generate -> фабричный метод -> служба классов генератора
Я хотел бы сгенерировать файл PDF, используя веточка, но у меня проблема с ContainerInterface. Боюсь, моя концепция работы не верна. Кто-нибудь может сказать мне, иду ли я в правильном направлении?
Я хотел бы создать генератор PDF-файлов, который создается с помощью классов поставщика и генератора.
Контроллер-генератор
public function generate($provider, Request $request): Response
{
$generator = $this->factory->createGenerator($provider);
$content = json_decode($request->getContent(), true);
$generator->generate($content['params']);

return new JsonResponse($generator->getData());
}

GeneratorFactory
class GeneratorFactory
{
public function createGenerator($generator): Generator
{
$generatorName = "App\\Generators\\" . ucwords($generator) . "\\Generator";

if (!class_exists($generatorName)) {
throw new \Exception("We dont find genarator with name: " . $generator);
}

return new $generatorName;
}
}

Генератор с завода
public function __construct()
{
$this->object = new GeneratorObject;
$this->validator = new Validator;
$this->service = new PdfService();
}
public function generate(array $params): void
{
$valided = $this->validator->Validate($params);
if (!$valided) {
throw new Exception("Invalid parameters", 1);
}
$this->setDataToObject($params);
$pdf = $this->service->createPdf($this->object);
$this->data = $pdf;
}

Сервис для pdf
public function createPdf(GeneratorObject $pdfObject): string
{
$url = '';
$html = $this->templating->render('pdf/index.html.twig',[$pdfObject]);

return $url;
}


Подробнее здесь: https://stackoverflow.com/questions/758 ... ory-method
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»