Slovníček pojmů

AJAX

Asynchronous JavaScript and XML – technologie výměny informací mezi klientem a serverem přes HTTP protokol bez nutnosti znovunačtení celé stránky při každém požadavku. Ačkoliv by se mohlo z názvu zdát, že posílá data pouze ve formátu XML, běžně se používá také formát JSON.

Akce presenteru

Logická část presenteru, která vykonává jednu akci. Například zobrazí stránku produktu, odhlásí uživatele apod. Jeden presenter může mít více akcí.

BOM

Tzv. byte order mark je speciální první znak v souboru, který se používá jako indikátor pořadí bajtů v kódování. Některé editory ho do souborů vkládají. Je prakticky neviditelný, ale způsobuje problémy s odesíláním výstupu a hlaviček z PHP. K hromadnému odstranění můžete použít Code Checker.

Controller

Řadič, který zpracovává požadavky uživatele a na jejich základě pak volá patřičnou aplikační logiku (tj. model) a poté požádá view o vykreslení dat. Obdobou kontrolerů v Nette Frameworku jsou presentery.

Cross-Site Scripting (XSS)

Cross-Site Scripting je metoda narušení webových stránek zneužívající neošetřených výstupů. Útočník pak dokáže do stránky podstrčit svůj vlastní kód a tím může stránku pozměnit nebo dokonce získat citlivé údaje o návštěvnících. Proti XSS se lze bránit jen důsledným a korektním ošetřením všech řetězců.

Nette Framework přichází s revoluční technologií Context-Aware Escaping, která vás provždy zbaví rizika Cross-Site Scriptingu. Všechny výstupy totiž ošetřuje automaticky a tak se nemůže stát, že by kodér na něco zapomněl.

Cross-Site Request Forgery (CSRF)

Útok Cross-Site Request Forgery spočívá v tom, že útočník naláká oběť na stránku, která nenápadně v prohlížeči oběti vykoná požadavek na server, na kterém je oběť přihlášena, a server se domnívá, že požadavek vykonala oběť o své vůli. A tak pod identitou oběti provede určitý úkon, aniž by ta o tom věděla. Může jít o změnu nebo smazání dat, odeslání zprávy atd.

Nette Framework automaticky chrání formuláře a signály v presenterech před tímto typem útoku. A to tím, že zabraňuje jejich odeslání či vyvolání z jiné domény.

Escapování

Escapování je převod znaků majících v daném kontextu speciální význam na jiné odpovídající sekvence. Příklad: do řetězce ohraničeného uvozovkami chceme zapsat uvozovky. Jelikož uvozovky mají v kontextu řetězce speciální význam a jejich prosté zapsání by bylo chápáno jako ukončení řetězce, je potřeba je zapsat jinou odpovídající sekvencí. Jakou přesně určují pravidla kontextu.

Filter (dříve helper)

V šablonách se pod pojmem filter obvykle rozumí funkce, která pomáhá upravit nebo přeformátovat data do výsledné podoby. Šablony disponují několika standardními filtry.

Invalidace

Oznámení snippetu, aby se překreslil. V jiném významu také smazání obsahu cache.

JSON

Formát pro výměnu dat vycházející ze syntaxe JavaScriptu (je její podmnožinou). Přesnou specifikaci najdete na stránce www.json.org.

Komponenta

Znovupoužitelná součást aplikace. Může to být vizuální část stránky, jak popisuje kapitola Píšeme komponenty, nebo se pod pojmem komponenta rozumí také třída Component (taková komponenta nemusí být vizuální).

Kontrolní znaky

Kontrolní znaky jsou neviditelné znaky, které se mohou vyskytovat v textu a případně i způsobovat problémy. K jejich hromadnému odstranění ze souborů můžete použít Code Checker a k odstranění z proměnné funkci Strings::normalize().

Eventy (události)

Událost je očekávaná situace v objektu, která když nastane, zavolají se tzv. handlery, tedy funkce reagující na událost. Událostí může být třeba odeslání formuláře, přihlášení uživatele atd. Například k přihlášení uživatele dochází v metodě Nette\Security\User::login(). Objekt User má veřejnou proměnnou $onLoggedIn, což je pole, do kterého kdokoliv může přidat callback. V okamžiku, kdy se uživatel přihláší, tak metoda login() zavolá všechny callbacky v poli. Název proměnné ve tvaru onXyz je konvence používaná v celém Nette.

Latte

Jeden z nejpokrokovějších šablonovacích systémů.

Model

Model je datový a zejména funkční základ celé aplikace. Je v něm obsažena celá aplikační logika (používá se i termín byznys logika). Je to ono MMVC nebo MVP. Jakákoliv akce uživatele (přihlášení, vložení zboží do košíku, změna hodnoty v databázi) představuje akci modelu.

Model si spravuje svůj vnitřní stav a ven nabízí pevně dané rozhraní. Voláním funkcí tohoto rozhraní můžeme zjišťovat či měnit jeho stav. Model neví o existenci view nebo controlleru.

Model-View-Controller

Softwarová architektura, která vznikla z potřeby oddělit u aplikací s grafickým rozhraním kód obsluhy (controller) od kódu aplikační logiky (model) a od kódu zobrazujícího data (view). Tím jednak aplikaci zpřehledňuje, usnadňuje budoucí vývoj a umožňuje testování jednotlivých části zvlášť.

Model-View-Presenter

Architektura, vycházející z Model-View-Controller.

Modul

Modul představuje v Nette Framework balíček presenterů a šablon, případně i komponent a modelů, které dodávají presenteru data. Je to tedy určitá logická část aplikace.

Například e-shop může mít tři moduly:

  1. katalog produktů s košíkem
  2. administrace pro zákazníka
  3. administrace pro provozovatele

Namespace

Jmenný prostor, součást jazyka PHP od verze 5.3 a některých jiných programovacích jazyků, umožňující používání tříd, které jsou v různých knihovnách nazvány stejně, aniž by došlo ke kolizi jmen. Viz dokumentace PHP.

Presenter

Presenter je objekt, který vezme požadavek přeložený routerem z HTTP požadavku a vygeneruje odpověď. Odpovědí může být HTML stránka, obrázek, XML dokument, soubor na disku, JSON, přesměrování nebo cokoliv vymyslíte.

Obvykle se pod pojmem presenter myslí potomek třídy Nette\Application\UI\Presenter. Podle příchozích požadavků spouští odpovídající akce a vykresluje šablony.

Router

Obousměrný překladač mezi HTTP požadavkem / URL a akcí presenteru. Obousměrné znamená, že z HTTP požadavku lze odvodit akci presenteru, ale také obráceně k akci vygenerovat odpovídající URL. Více v kapitole o routování URL.

SameSite cookies poskytují mechanismus jak rozpoznat, co vedlo k načtení stránky. Může mít tři hodnoty: Lax, Strict a None (ten vyžaduje HTTPS). Pokud požadavek na stránku přichází přímo z webu nebo uživatel otevře stránku přímým zadáním do adresního řádku nebo kliknutím na záložku, prohlížeč pošle serveru všechny cookies (tedy s příznaky Lax, Strict i None). Pokud se uživatel na web proklikne přes odkaz z jiného webu, předají se serveru cookies s příznaky Lax a None. Pokud požadavek vznikne jiným způsobem, jako je odeslání POST formuláře z jiného webu, načtení uvnitř iframe, pomocí JavaScriptu, atd., odešlou se jen cookies s příznakem None.

Snippet

Výstřižek, část stránky, kterou lze samostatně překreslit během AJAXového požadavku.

View

View, tedy pohled, je vrstva aplikace, která má na starost zobrazení výsledku požadavku. Obvykle používá šablonovací systém a ví, jak se má zobrazit ta která komponenta nebo výsledek získaný z modelu.