Ответы и объяснения на 20 вопросов, на которые должен ответить каждый разработчик Twig

Содержание

Эта статья содержит ответ на ранее опубликованный тест 20 вопросов, на которые должен ответить каждый разработчик Twig.

1. Как вы можете объявить переменную в Twig?

  • С

Это правильный ответ, так как синтаксис для объявления переменной следует после открытия {%, имени переменной, символа равенства для определения ее значения и значения для назначения:

{% set myVariable = 'My Text' %}

Прочитайте установить ключевое слово в официальных документах для дополнительной информации.

2. Каков вывод следующего фрагмента?

{{ {name: "Xavier", lastName: "Nemo", first: false, address: "P Sherman, 42 Wallaby Way, Sydney"} | first }}
  • D

Выводом фрагмента будет «Xavier», так как первый фильтр возвращает первый «элемент» последовательности, отображения или строки. Для получения дополнительной информации об этом фильтре, посетите официальный документы здесь.

3. Каков синтаксис комментариев для Twig?

  • D

Закомментированный код в Twig начинается со скобки и знака числа и закрывается соответственно в обратном порядке. Все, что находится внутри блока комментариев, не будет отображаться в представлении и не обрабатываться Twig. Синтаксис комментариев также поддерживает несколько строк:

{#
Everything inside is a comment
#}

4. Выход побег в веточку

  • В
  • D

Три ответа верны в этом вопросе. Экранирование по умолчанию включено в Twig, и его можно опустить, используя необработанный фильтр в переменной с безопасным содержимым. Поэтому он предлагает автоматическую защиту от атак XSS, поэтому теги HTML не будут анализироваться браузером. Внутренне escape использует PHP-функцию htmlspecialchars ().

5. Создает ли Twig специальную переменную в области цикла for для получения информации о текущей итерации? Если это так, как его зовут?

  • С

Внутри блока for вы можете получить доступ к некоторым специальным переменным, содержащимся в loop переменная:

переменная
Описание
loop.indexТекущая итерация цикла. (1 проиндексировано)
loop.index0Текущая итерация цикла. (0 проиндексировано)
loop.revindexКоличество итераций от конца цикла (1 проиндексировано)
loop.revindex0Количество итераций от конца цикла (0 проиндексировано)
loop.firstTrue если первая итерация
loop.lastTrue если последняя итерация
loop.lengthКоличество предметов в последовательности
loop.parentРодительский контекст

Для получения дополнительной информации об этой специальной переменной, читать официальные документы здесь.

6. Каким будет вывод следующего фрагмента?

{% verbatim %}
    {% for row in rows %}
  • {{ rows.text }}
  • {% endfor %}
{% endverbatim %}
  • В

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

7. Какой из следующих фильтров по умолчанию не существует в Twig?

  • Е

Фильтр unescape или strtolower не существует в Twig по умолчанию, однако вы можете создать такие фильтры, создав собственное расширение.

8. Каков вывод следующего фрагмента?

{% spaceless %}
Welcome David !
{% endspaceless %}
  • D

Правильный вариант — D, вывод которого:


Welcome David !

Простая причина в том, что блок без пробелов удаляет пробелы между тегами HTML, а не пробелы внутри тегов HTML или пробелы в простом тексте, поэтому другие параметры не верны. Чтобы узнать больше об этом блоке, читать документы здесь.

9. Каков правильный синтаксис для объединения строк?

  • С

Вы можете объединять строки, используя оператор ~ (тильда).

10. Как вы можете проверить, идентичны ли 2 переменные (важные идентичные, а не равные)?

  • Е

То же самое, что и проверка, проверяет, совпадает ли переменная с другой переменной. Это эквивалентно === в PHP, однако в Twig этот синтаксис не сохраняется. Для получения дополнительной информации об этом тесте, читать официальные документы здесь.

11. Можно ли использовать те же самые PHP-константы в Twig по умолчанию?

  • С

Вы можете извлечь значение любой константы PHP, если она доступна в PHP, используя функцию константы, которая возвращает значение из имени нужной вам константы, например, чтобы получить значение JSON_PRETTY_PRINT константа для печати идентифицированной строки JSON, вы должны сделать:

{% set data = {
"Hey": "Ho",
"What": 12,
"Value" : true
}%}
{{ data|json_encode(constant('JSON_PRETTY_PRINT'))}}

12. Как вы можете распечатать случайное значение из массива с помощью Twig?

Функция random возвращает случайное значение в зависимости от предоставленного типа параметра:

  • случайный элемент из последовательности
  • случайный символ из строки
  • случайное целое число от 0 до целочисленного параметра (включительно).

В этом случае функция получает массив, и из этого массива будет выбран случайный элемент. Здесь нет случайного фильтра или функции рандомизации.

13. Как вы можете распечатать значение атрибута «a-b» из следующего массива ключ-значение?

{% set MyVariable = {
"a": 1,
"b": 2,
"c": 3,
"a-b": 4
}%}
  • В
  • С

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

14. Каков вывод следующего фрагмента?

{% with %}
{% set MyVariable = 42 %}
{% endwith %}
{{ MyVariable }}

С тегом with вы можете создать новую внутреннюю область видимости. Переменные, установленные в этой области, не видны за пределами области. Поскольку мы печатаем MyVariable вне области видимости, код выдаст исключение.

15. Какие из следующих тестовых ключевых слов не существуют в Twig?

  • Е

В Twig нет теста с именем instanceof, хотя остальные существуют.

16. Можно ли напечатать содержимое уже существующего блока дважды?

  • В

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

{% block title %}{% endblock %}
{{ block('title') }}
{% block body %}{% endblock %}

17. Каков вывод следующего фрагмента?

{% set items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', "h"] %}

{% for row in items|batch(4) %}

{%- for column in row -%}

{%- endfor -%}

{% endfor %}
{{ column }}

Пакетный фильтр существует и разделяет существующий массив на части по размеру целого числа, указанного в качестве первого аргумента (это может быть также число в строковом формате). Разделив данный массив элементов на куски одинакового размера, мы получили бы 2 строки, сгенерированные для HTML для таблицы, поэтому возможны варианты A и B, однако управление пространством, предусмотренное в цикле for, сбрасывает B, поскольку оно показывает выходные данные без пробелов, так что А является правильным ответом. Для получения дополнительной информации о пакетном фильтре, прочитайте официальные документы здесь.

18. Каков вывод следующего фрагмента?

{{ 12.4 // 2 }}
  • С

Ответ 6. Оператор двойной косой черты, делит два числа и возвращает результат с целыми числами. Это просто синтаксический сахар для круглый фильтр.

19. Какой из следующих фрагментов позволяет напечатать алфавит, разделенный запятой?

  • D

Оба параметра верны, так как функция диапазона возвращает список, содержащий арифметическую последовательность целых чисел и символов. Веточка встроенная .. оператор синтаксический сахар для range функция (с шагом 1, или же -1 если начало больше конца).

20. Каков вывод следующего фрагмента?

Поскольку у нас нет никакого контекста, мы можем предположить, что переменная не существует, поэтому будет использоваться фильтр по умолчанию. Фильтр по умолчанию возвращает переданное значение по умолчанию, если значение не определено или пусто, в противном случае значение переменной, которое в данном случае представляет собой простую строку, а именно: «Пользователь не вошел в систему».

Сколько ответов было правильным в вашем тесте? Мы будем рады услышать о ваших результатах в поле для комментариев.

Ссылка на основную публикацию
Adblock
detector