Речник на термините
AJAX
Асинхронният JavaScript и XML е технология за комуникация между клиент и сървър, базирана на HTTP, без да се налага при всяка заявка да се презарежда цялата страница. Въпреки съкращението, вместо XML често се използва форматът JSON.
Действие на водещия
Логическа част от презентатора, която извършва едно действие, например показване на продуктова страница, изписване на потребител и т.н. Един водещ може да има няколко действия.
BOM
Така наречената маска за ред на байтовете е специален първи символ във файл, който определя реда на байтовете в кодирането. Някои редактори го активират автоматично, то е почти невидимо, но причинява проблеми със заглавията и изпращането на изход от PHP. Можете да използвате програмата за проверка на кода, за да я изтриете масово.
Контролер
Контролерът обработва заявките от потребителя и въз основа на тези заявки извиква специфична логика на приложението (т.е. модел), след което извиква View, за да визуализира данните. Аналогът на контролерите в рамките на Nette са презентаторите.
Скриптиране на кръстосани сайтове (XSS)
Cross-site scripting е метод за нарушаване на работата на уебсайт чрез използване на непроверени входни данни. Атакуващият може да инжектира свой собствен HTML или JavaScript код и да промени външния вид на страницата или дори да събере чувствителна потребителска информация. Защитата срещу XSS е проста: последователно и правилно проверявайте всички низове и входни данни.
Рамката Nette Framework предлага чисто нова технология за избягване на контекст, която завинаги ще премахне рисковете от скриптове на различни сайтове. Той автоматично ескапира всички входни данни въз основа на даден контекст, така че програмистът не може случайно да забрави нещо.
Фалшифициране на заявка от друг сайт (CSRF)
Атаката Cross-Site Request Forgery се състои в това, че нападателят примамва жертвата да посети страница, която безшумно изпълнява заявка в браузъра на жертвата към сървъра, в който жертвата е влязла в момента, и сървърът приема, че заявката е направена от жертвата по нейна собствена воля. Сървърът извършва определено действие под самоличността на жертвата, но без нейното знание. Това може да бъде промяна или изтриване на данни, изпращане на съобщение и т.н.
Структурата Nette Framework автоматично защитава формулярите и сигналите в презентаторите от този тип атаки. Това става, като се предотвратява изпращането или извикването им от друг домейн.
Вкарване на зависимост (Dependency Injection)
Впръскването на зависимости (Dependency Injection – DI) е шаблон за проектиране, който ви казва как да разделите създаването на обекти от техните зависимости. Това означава, че даден клас не е отговорен за създаването или инициализирането на своите зависимости, а вместо това тези зависимости се предоставят от външен код (който може да включва контейнер за DI). Предимството е, че това позволява по-голяма гъвкавост на кода, по-добра четимост и по-лесно тестване на приложенията, тъй като зависимостите са лесно заменяеми и изолирани от други части на кода. За повече информация вижте Какво е инжектиране на зависимости?
Контейнер за инжектиране на зависимости
Контейнерът за инжектиране на зависимости (също DI контейнер или IoC контейнер) е инструмент, който се занимава със създаването и управлението на зависимостите в дадено приложение (или услуги). Контейнерът обикновено има конфигурация, която определя кои класове са зависими от други класове, какви конкретни реализации на зависимости да се използват и как да се създават тези зависимости. След това контейнерът създава тези обекти и ги предоставя на класовете, които се нуждаят от тях. За повече информация вижте Какво е DI контейнер?
Екраниране
Скринингът е преобразуване на символи, които имат специално значение
в даден контекст, в други еквивалентни последователности. Пример:
Искаме да напишем обърнати запетаи в низ с кавички. Тъй като обърнатите
запетаи имат специално значение в контекста на цитирания низ, трябва
да се използва друга еквивалентна последователност. Конкретната
последователност се определя от правилата на контекста (напр. \"
в низ с кавички в PHP, "
в атрибути на HTML и т.н.).
Филтър
Функция за филтриране. В шаблоните филтърът е функция, която помага да се променят или форматират данните в изходната форма. Няколко стандартни филтъра са предварително дефинирани в шаблоните.
Инвалидизация
Известие за фрагмент за повторно визуализиране. В друг контекст също така изчистване на кеша.
JSON
Формат за обмен на данни, базиран на синтаксиса на JavaScript (подмножество на този синтаксис). Точната спецификация можете да намерите на адрес www.json.org.
Компонент
Част от приложение за многократна употреба. Той може да бъде визуална част от страница, както е описано в главата components, или терминът може да се отнася и за клас Component (такъв компонент не е задължително да бъде визуален).
Контролни знаци
Контролните знаци са невидими знаци, които могат да се появят в текста и да причинят някои проблеми в крайна сметка. Можете да използвате Code Checker, за да ги премахнете масово от файловете, и функцията Strings::normalize(), за да ги премахнете от променлива.
Събития
Събитието е очаквана ситуация в обекта, при настъпването на която се извикват т.нар. манипулатори, т.е. обратни извиквания, реагиращи на събитието (образец). Събитието може да бъде например подаване на формуляр, влизане на потребител и т.н. По този начин събитията са форма на инверсия на контрола.
Например, потребител влиза в системата по метода
Nette\Security\User::login()
. Обектът User
има публична променлива
$onLoggedIn
, която представлява масив, към който всеки може да добави
обратно извикване. Веднага щом потребителят влезе в системата, методът
login()
извиква всички обратни извиквания в масива. Името на
променливата във формата onXyz
е конвенция, използвана в Nette.
Latte
Една от най-иновативните системи за шаблониране в историята.
Модел
Моделът представлява данните и функционалната основа на цялото приложение. Тя включва цялата логика на приложението (понякога наричана още „бизнес логика“). Това е M от MVC или MPV. Всяко действие на потребителя (влизане в системата, поставяне на елемент в количка за пазаруване, промяна на стойност в базата данни) представлява действие на модела.
Моделът управлява вътрешното си състояние и предоставя публичен интерфейс. Чрез извикването на този интерфейс можем да приемем или променим състоянието му. Моделът не знае за съществуването на View или Controller, той е напълно независим от тях.
Model-View-Controller (MVC)
Софтуерна архитектура, възникнала при разработването на приложения с графичен потребителски интерфейс, за да се отдели кодът за управление на потока (Controller) от кода на логиката на приложението (Model) и от кода за визуализиране на данни (View). Това прави кода по-ясен, улеснява бъдещото разработване и позволява отделните части да бъдат тествани отделно.
Model-View-Prenderer (MVP)
Архитектура, базирана на Model-View-Controller (MVC).
Модул
Един модул в рамката Nette е набор от презентатори и шаблони, а също така компоненти и модели, които служат като данни за презентатора. По този начин тя е определена логическа част от приложението.
Например, един електронен магазин може да се състои от три модула:
- Продуктов каталог с количка за пазаруване.
- Администриране за клиента.
- Администрация за собственика на магазина.
Пространство от имена
Пространството от имена е функция на PHP от версия 5.3, както и на някои други езици за програмиране. Това помага да се избегнат колизии в имената (например два класа с едно и също име), когато се използват различни библиотеки. За повече информация вижте документацията на PHP.
Презентатор
Презентаторът е обект, който приема заявка, преведена от маршрутизатор от HTTP заявка, и генерира отговор. Отговорът може да бъде HTML страница, картина, XML документ, файл, JSON, пренасочване или каквото друго се сетите.
Представящият обикновено е потомък на класа Nette\Application\UI\Presenter. При заявките той извършва съответните действия и визуализира шаблони.
Маршрутизатор
Двупосочен транслатор между HTTP заявка / URL адрес и действие на презентатора. Двупосочността означава, че можете не само да извличате действие на Presenter от HTTP заявка, но и да генерирате съответния URL адрес за действието. За повече подробности вижте главата за маршрутизиране на URL.
Бисквитка SameSite
Бисквитките SameSite осигуряват механизъм за разпознаване на това, което
е довело до зареждането на страницата. Тя може да има три стойности:
Lax
, Strict
и None
(последната изисква HTTPS). Ако заявката
за страницата идва директно от сайта или потребителят отваря
страницата чрез директно въвеждане в адресната лента или щракване
върху отметки, браузърът изпраща всички бисквитки на сървъра (т.е. с
флагове Lax
, Strict
и None
). Ако потребителят щракне
върху сайта чрез връзка от друг сайт, на сървъра се предават бисквитки
с флагове Lax
и None
. Ако заявката е направена по друг начин,
например чрез изпращане на POST формуляр от друг сайт, зареждане в iframe,
използване на JavaScript и т.н., се изпращат само бисквитки с флаг
None
.
Услуга
В контекста на Dependency Injection (инжектиране на зависимости) услугата се отнася до обект, който се създава и управлява от DI контейнер. Една услуга може лесно да бъде заменена с друга реализация, например за целите на тестването или за промяна на поведението на приложението, без да се налага да се променя кодът, който използва услугата.
Извадка
Извадка от страница, която може да се визуализира отделно по време на AJAX заявка.
Изглед
Изгледът е слой от приложението, който отговаря за визуализирането на резултатите от заявките. Обикновено той използва система за шаблониране и знае как да визуализира своите компоненти или резултатите, взети от модела.