Орла
Области
Компаний
Пользователи
Галерея
Фиксированные новости
Орла
Отзывы о фирмах
Тарифы
Пользователи
Области
Банкоматы
Торговые точки
Доска объявлений
Курсы валют
Скидки
организации Орла
организации области
товары
сайты
сайты Орел
Данные
Разделы
Поиск
Поиск запросы
Статистика
Показы каталога организаций
Статистика клиенты
Пользователи
Сайты
Управление сайтом
Анкета
Аптеки
Афиша
Афиша новая
Баннеры
Бизнес >
Викторина
Голосование
Гость на сайте
Истории
Календарь событий
Каталоги >
Конкурс красоты
Конкурс аудио
Консультации
Меню
Новое на сайте
Новости >
Организации >
Программа ТВ
Публикации
Разделы сайта
Рассылка
Рестораны
Секрет фирмы >
Сервисы >
Ссылки
Тесты
Файловый менеджер
Форум
Фотогалерея
Обратная связь
Недвижимость
Новый год
Тексты
Пользователи
Юридический рейтинг
Отзывы на товары
Бан пользователей
Жалобы
Новые тесты
Коронавирус
Файловый менеджер
Имя файла
BlockFactory.php
Содержимое
<?php namespace Visitka\Blocks\Factory; use dimsog\arrayhelper\ArrayHelper; use Visitka\Blocks\Dto\BaseBlock; use Visitka\Blocks\Dto\Template; use Visitka\Blocks\Repositories\TemplatesRepository; use Visitka\Blocks\Utils\BlockClassMapping; /** * Фабрика для создания блоков РёР· массива данных РёР· базы данных или РёР· массива блока * Class BlockFactory * @package Visitka\Blocks\Factory */ class BlockFactory { private $organization; private $blockClassMapping; private $templates; public function __construct(array $organization) { $this->organization = $organization; $this->blockClassMapping = new BlockClassMapping(); $this->templates = new TemplatesRepository(); } /** * Рта функция создает блок РёР· данных сырых данных, полученных РёР· репозитория. * Сами блоки находятся РІ таблице firma_visitka_blocks * * @param array $rawBlock * @return BaseBlock|null */ public function getInstance(array $rawBlock) { $className = $this->blockClassMapping->getClassNameOrFail($rawBlock['block_id']); /** @var BaseBlock $block */ $block = new $className($this->organization); $block->setVisitkaBlockId((int) $rawBlock['id']) ->setPosition((int) $rawBlock['position']) ->setTemplate($this->templates->findOne($rawBlock['template_id'])) ->setHeader($rawBlock['header']) ->loadContent(); return $block; } /** * Рта фунция, РІ отличие РѕС‚ getInstance() создает блок РёР· массива переданных данных. * РџСЂРё этом этот массив должен содержать РІСЃРµ данные, РїРѕ которым будет построен блок. * * Такие данные РјРѕРіСѓС‚ придти РёР· backend'a, РєРѕРіРґР° пользователь сохраняет какой-то блок. * * @param array $block * @return BaseBlock|null */ public function getInstanceFromArray(array $block) { $className = $this->blockClassMapping->getClassNameOrFail((int) ArrayHelper::getValue($block, 'id', 0)); /** @var BaseBlock $instance */ $instance = new $className($this->organization); $template = (new TemplatesRepository())->findOne((int) ArrayHelper::getValue($block, 'template_id', 0)); if ($template instanceof Template == false) { throw new \DomainException("Укажите шаблон вывода блока"); } $instance ->setTemplate($template) ->setVisitkaBlockId((int) ArrayHelper::getValue($block, 'visitka_block_id', 0)) ->setHeader(ArrayHelper::getValue($block, 'header')) ->setPosition((int) ArrayHelper::getValue($block, 'position')) ->loadContentFromArray($block); return $instance; } public function getInstances(array $rawBlocks) { $instances = []; foreach ($rawBlocks as $rawBlock) { $instances[] = $this->getInstance($rawBlock); } return $instances; } }
/visitka/src/Blocks/Factory/
Имя
Дата
Размер
..
2020-03-10
BlockFactory.php
2020-02-26
3 кб.
TemplateFactory.php
2020-02-07
1 кб.
/visitka/src/Blocks/Factory
Загрузить файлы
Файл 1
Файл 2
Файл 3