Глоссарий

AJAX

Асинхронный JavaScript и XML — технология взаимодействия клиента и сервера по протоколу HTTP без необходимости перезагрузки всей страницы при каждом запросе. Несмотря на аббревиатуру, формат JSON часто используется вместо XML.

Действие презентера

Логическая часть presenter, выполняющая одно действие, например, показать страницу продукта, выписать пользователя и т. д. У одного презентера может быть несколько действий.

BOM

Так называемая маска порядка байтов — это специальный первый символ файла, который указывает порядок байтов в кодировке. Некоторые редакторы включают его автоматически, он практически незаметен, но он вызывает проблемы с заголовками и отправкой вывода из PHP. Для массового удаления можно использовать Code Checker.

Контроллер

Контроллер обрабатывает запросы от пользователя и на их основе вызывает определенную логику приложения (т. е. Модель), затем он вызывает Вид для рендеринга данных. Аналогом контроллеров в фреймворке Nette являются презентеры.

Межсайтовый скриптинг (XSS)

Межсайтовый скриптинг – это метод нарушения работы сайта с использованием неэкранированного ввода. Злоумышленник может внедрить свой собственный код HTML или JavaScript и изменить внешний вид страницы или даже собрать конфиденциальную информацию о пользователях. Защита от XSS проста: последовательное и правильное экранирование всех строк и вводимых данных.

Nette Framework предлагает совершенно новую технологию Context-Aware Escaping, которая навсегда избавит вас от рисков межсайтового скриптинга. Он автоматически экранирует все вводимые данные, основываясь на заданном контексте, поэтому кодер не сможет случайно что-то забыть.

Подделка межсайтовых запросов (CSRF)

Атака Cross-Site Request Forgery заключается в том, что злоумышленник заманивает жертву посетить страницу, которая молча выполняет запрос в браузере жертвы к серверу, на котором жертва в данный момент зарегистрирована, и сервер считает, что запрос был сделан жертвой по собственному желанию. Сервер выполняет определенное действие под личностью жертвы, но без ее ведома. Это может быть изменение или удаление данных, отправка сообщения и т.д.

Nette Framework автоматически защищает формы и сигналы в презентаторах от этого типа атак. Это делается путем предотвращения их отправки или вызова из другого домена.

Экранирование

Экранирование — это преобразование символов, имеющих особое значение в данном контексте, в другие эквивалентные последовательности. Пример: Мы хотим записать кавычки в заключенную в кавычки строку. Поскольку кавычки имеют особое значение в контексте заключенной в кавычки строки, необходимо использовать другую эквивалентную последовательность. Конкретная последовательность определяется правилами контекста (например, \" в заключенной в кавычки строке PHP, " в атрибутах HTML и т. д.).

Фильтр

Функция фильтрации. В шаблонах filter — это функция, которая помогает изменить или отформатировать данные в выходную форму. В шаблонах предопределено несколько стандартных фильтров.

Инвалидация

Уведомление о сниппете для повторного рендеринга. В другом контексте также очистка кэша.

JSON

Формат обмена данными, основанный на синтаксисе JavaScript (это его подмножество). Точную спецификацию можно найти на сайте www.json.org.

Компонент

Многократно используемая часть приложения. Это может быть визуальная часть страницы, как описано в главе components, или этот термин может также обозначать класс Component (такой компонент не обязательно должен быть визуальным).

Управляющие символы

Управляющие символы — это невидимые символы, которые могут встречаться в тексте и в конечном итоге вызывать некоторые проблемы. Для их массового удаления из файлов можно использовать Code Checker, для удаления из переменной — функцию Strings::normalize().

События

Событие — это ожидаемая ситуация в объекте, и когда оно происходит, вызываются так называемые обработчики, то есть функции, которые реагируют на событие. Событием может быть отправка формы, вход пользователя в систему и т. д. Например, вход пользователя в систему происходит в методе Nette\Security\User::login(). Объект User имеет публичную переменную $onLoggedIn, представляющую собой массив, в который каждый может добавить обратный вызов. Как только пользователь входит в систему, метод login() вызывает все обратные вызовы в массиве. Имя переменной в форме onXyz — это соглашение, используемое во всем Nette.

Latte

Одна из самых инновационных систем шаблонирования за всю историю.

Модель

Модель представляет собой данные и функциональную основу всего приложения. Она включает в себя всю логику приложения (иногда также называемую «бизнес-логикой»). Это M из MVC или MPV. Любое действие пользователя (вход в систему, помещение товара в корзину, изменение значения базы данных) представляет собой действие модели.

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

Модель-Вид-Контроллер (MVC)

Архитектура программного обеспечения, возникшая при разработке GUI-приложений для отделения кода управления потоком (Контроллер) от кода логики приложения (Модель) и от кода рендеринга данных (Вид). Таким образом, код становится более понятным, это облегчает будущую разработку и позволяет тестировать отдельные части отдельно.

Модель-Вид-Презентер (MVP)

Архитектура, основанная на Модель-Вид-Контроллер (MVC).

Модуль

Модуль в фреймворке Nette представляет собой набор презентеров и шаблонов, в конечном итоге также компонентов и моделей, которые служат данными для презентера. Таким образом, это определенная логическая часть приложения.

Например, электронный магазин может состоять из трех модулей:

  1. Каталог товаров с корзиной.
  2. Администрирование для клиента.
  3. Администрирование для владельца магазина.

Пространство имен

Пространство имен является особенностью языка PHP, начиная с версии 5.3, а также некоторых других языков программирования. Это помогает избежать столкновений имен (например, два класса с одинаковым именем) при совместном использовании различных библиотек. Более подробную информацию смотрите в документации PHP.

Презентер

Презентер — это объект, который принимает запрос, переведенный маршрутизатором из HTTP-запроса, и генерирует ответ. Ответом может быть HTML-страница, картинка, XML-документ, файл, JSON, перенаправление или всё, что вы придумаете.

Под презентером обычно подразумевается потомок класса Nette\Application\UI\Presenter. По запросам он выполняет соответствующие действия и рендерит шаблоны.

Роутер

Двунаправленный переводчик между HTTP-запросом / URL и действием презентера. Двунаправленность означает, что можно не только получить Действие презентера из HTTP-запроса, но и сгенерировать соответствующий URL для действия. См. подробнее в главе об URL-маршрутизации.

Фрагмент страницы, который может быть отдельно повторно отображен во время запроса AJAX.

Вид

Вид (или Представление) — это слой приложения, который отвечает за отрисовку результатов запроса. Обычно он использует систему шаблонов и знает, как отобразить свои компоненты или результаты, взятые из модели.