Twig как правильно использовать? Добрый вечер! Создаю не особо большой проект, решил использовать ООП и twig. Только для того чтобы Front end и Back end лежали в отдельности. Структура сайта очень прост, есть левый сайдбар (динамический) где выводится меню и основной контент где текст тоже динамический. Для вывода контента создал класс articles, который выводит на свой шаблон articles.tpl a для меню класс menu который выводит на шаблон menu.tpl и этот шаблон подключается


{% include "menu.tpl" %}
{% block content %}
{#тут контент#}
{% endblock %}



И через render делаю вывод. //Объект для вывода меню
$menu_object = new menu;
$menu=$menu_object->view()
echo $template->render(array('title'=>'Мой сайт', 'articles'=>$articles, 'menu_pages'=>$menu));
И вопрос, внутри класса articles создать объект(ы) для вывода меню и отправить на вывод это нормально? Если нет то как можно вывести чтоб не было дублирование кода.

21 Авг 2019 в 07:04
169 +1
0
Ответы
1

Да, создание объектов внутри класса articles для вывода меню не является хорошей практикой, так как это нарушает принципы ООП и приводит к повторному использованию кода.

Чтобы избежать дублирования кода, можно использовать композицию объектов. В вашем случае, вы можете создать объект меню вне класса articles и передать его в конструктор класса articles или используйте зависимость через метод внутри класса для передачи объекта меню вместо создания нового объекта внутри.

Пример:

$menu_object = new menu;
$articles = new articles($menu_object);
$articles_content = $articles->view();
echo $template->render(array('title'=>'Мой сайт', 'articles'=>$articles_content, 'menu_pages'=>$menu_object->view()));

В классе articles вы можете использовать переданный объект меню для вывода меню вместо создания нового объекта:

class articles {
private $menu;
public function __construct($menu) {
$this->menu = $menu;
}
public function view() {
// Ваш код для вывода контента
$menu_content = $this->menu->view();
return $content;
}
}

Таким образом, вы избежите дублирования кода и соблюдете принципы ООП.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир