У меня проблема с правильным расположением сервисов. Я хочу создать генератор, который благодаря провайдеру будет создавать соответствующий объект-генератор через фабричный метод. На мой взгляд, это выглядело бы примерно так:
Запрос 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
Генератор заводским методом ⇐ Php
Кемеровские программисты php общаются здесь
1729229678
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;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/75881025/generator-with-factory-method[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия