<MyRusakov.ru />

Создание игр на Unreal Engine 4

Создание игр на Unreal Engine 4

Данный курс научит Вас созданию игр на Unreal Engine 4. Курс состоит из 12 модулей, в которых Вы с нуля освоите этот движок и сможете создавать самые разные игры.

В курсе Вы получите всю необходимую теоретическую часть, а также увидите массу практических примеров. Дополнительно, почти к каждому уроку идут упражнения для закрепления материала.

Помимо самого курса Вас ждёт ещё 5 бесплатных ценных Бонусов: «Динамическая смена дня и ночи», «Создание динамической погоды», «Создание искусственного интеллекта для NPC», «Создание игры под мобильные устройства» и «Создание прототипа RPG с открытым миром».

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Наследование шаблонов и кэширование в Twig

Наследование шаблонов и кэширование в Twig

PHP шаблонизатор Twig обладает рядом важных, даже можно сказать прорывных, особенностей. После того как вы познакомитесь с ними, вы вряд ли захотите расстаться с теми удобствами, которые они предлагают.

При создании разметки сайта, как известно, у нас есть элементы страниц сайта, которые, за редким исключением, присутствуют постоянно – это заголовок сайта, подвал и меню. Эти элементы нужно вынести в отдельные файлы (header.php, footer.php, menu.php).

В Twig’e, же для того, чтобы избежать постоянного включения одних и тех же элементов страницы, таких как заголовок и подвал, во все шаблоны, используются вложенные шаблонов, при котором один шаблон внедряется в другой, называемые блоками.

На практике это выглядит следующим образом. Нам необходимо создать HTML файл, назовем, например main_layout.html:

<!DOCTYPE html>
<html lang="ru-RU">
    <head>
        <meta charset="UTF-8">
        <title>Примеры шаблонизатора Twig</title>
    </head>
    <body>
        {% block content %}
        {% endblock %}
    </body>
</html>

В разметке нами был создан блок с названием content. Здесь мы подошли еще к одному важному понятию, которое существует в Twig – наследование шаблонов. Т.е. любой файл с разметкой – шаблон, который наследуется от main_layout.html может реализовать (заполнить произвольным содержимым) этот блок content, который отображается на данном месте в разметке. С помощью данного механизма, у нас есть возможность многократного использования шаблона, без необходимости переписывать в нем что-либо. Вернемся к нашему примеру. Главный файл index.html теперь можно написать подобным образом:

{% extends "main_layout.html" %}

{% block content %}
    <table border="1" style="width: 80%;">
        <thead>
            <tr>
                <td>Имя</td>
                <td>Предмет</td>
                <td>Возраст</td>
                <td>Начал(а) работать</td>
            </tr>
        </thead>
        <tbody>
            {% for staffer in staff %}
                <tr>
                    <td>{{ staffer.name }}</td>
                    <td>{{ staffer.description }}</td>
                    <td>{{ staffer.age }}</td>
                    <td>{{ staffer.date_register|date("m/d/Y") }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
{% endblock %}

Как вы можете видеть файл index.html расширяет main_layout.html и добавляет в него блок content, который содержит таблицу сотрудников.

В Twig также предусмотрена возможность отображения только одного блока. Для того, чтобы сделать это нам сначала нужно загрузить шаблон и затем отрисовать его с помощью соответствующего метода.

$template = $twig->load('index.html'); echo $template->renderBlock('content', ['staff' => $staff]);

Кэширование

Конечно, разделение шаблона на отдельные части, упрощает понимание его назначения, но у подобного рода операций есть своя цена. Они плохо отражаются на производительности. Поэтому чтобы, Twig шаблоны не компилировались бы каждый раз разумно их кешировать. Объект Environment как раз может помочь нам в этом. Вот как:

$twig = new Twig_Environment($loader, ['cache' => '/views/cache']);

Для того, чтобы кеширование в Twig заработало, нам нужно передать в конструктор класса Environment массив с параметром cache, которому нужно поставить в соответствие ту директорию, в которой будут находиться скомпилированные шаблоны. При последующих запросах, Twig будет отдавать уже скомпилированные шаблоны, таким образом, этап разбора и компиляции шаблона будет пропущен. Но, запомните, что в папке для кеширования лежат именно скомпилированные шаблоны, которые затем будут выполнены. Т.е. там не лежат html-файлы с разметкой, как можно было бы подумать.

Таким образом, наследование – это очень мощный и ясный механизм расширения шаблонов разметки страницы, а кэширование позволяет сделать его еще и быстрым.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (1):

aleksmir aleksmir 28.03.2020 14:41:26

Небольшая поправка, не хватает __DIR__: $twig = new Twig_Environment($loader, ['cache' => __DIR__.'/views/cache']);

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.