Fogalomtár
AJAX
Asynchronous JavaScript and XML – technológia az információ cseréjére a kliens és a szerver között HTTP protokollon keresztül anélkül, hogy minden kérésnél újra kellene tölteni az egész oldalt. Bár a névből úgy tűnhet, hogy csak XML formátumban küld adatokat, gyakran használják a JSON formátumot is.
Presenter akció
A presenter logikai része, amely egy akciót hajt végre. Például megjeleníti a termékoldalt, kijelentkezteti a felhasználót stb. Egy presenter több akcióval is rendelkezhet.
BOM
Az ún. byte order mark egy speciális első karakter a fájlban, amelyet a bájtsorrend jelzőjeként használnak a kódolásban. Néhány szerkesztő beilleszti a fájlokba. Gyakorlatilag láthatatlan, de problémákat okoz a kimenet és a fejlécek küldésével PHP-ból. Tömeges eltávolításához használhatja a Code Checker eszközt.
Controller
Vezérlő, amely feldolgozza a felhasználói kéréseket, és ezek alapján meghívja a megfelelő alkalmazáslogikát (azaz a modell), majd megkéri a view-t az adatok megjelenítésére. A kontrollerek megfelelői a Nette Frameworkben a presenterek.
Cross-Site Scripting (XSS)
A Cross-Site Scripting egy weboldal-megsértési módszer, amely a nem kezelt kimeneteket használja ki. A támadó ezután képes saját kódot beilleszteni az oldalba, és ezzel módosíthatja az oldalt, vagy akár érzékeny adatokat szerezhet a látogatókról. Az XSS ellen csak az összes karakterlánc következetes és korrekt kezelésével lehet védekezni.
A Nette Framework forradalmi Context-Aware Escaping technológiával rendelkezik, amely örökre megszabadítja Önt a Cross-Site Scripting kockázatától. Minden kimenetet automatikusan kezel, így nem fordulhat elő, hogy a kódoló valamit elfelejtene.
Cross-Site Request Forgery (CSRF)
A Cross-Site Request Forgery támadás abból áll, hogy a támadó egy olyan oldalra csalogatja az áldozatot, amely észrevétlenül végrehajt egy kérést az áldozat böngészőjében egy olyan szerver felé, amelyen az áldozat be van jelentkezve, és a szerver azt hiszi, hogy a kérést az áldozat saját akaratából hajtotta végre. Így az áldozat identitása alatt végrehajt egy bizonyos műveletet anélkül, hogy az áldozat tudna róla. Ez lehet adatok módosítása vagy törlése, üzenet küldése stb.
A Nette Framework automatikusan védi az űrlapokat és a presenterekben lévő signálokat az ilyen típusú támadások ellen. Ezt úgy teszi, hogy megakadályozza azok elküldését vagy meghívását más domainről.
Dependency Injection
A Dependency Injection (DI) egy tervezési minta, amely leírja, hogyan válasszuk szét az objektumok létrehozását azok függőségeitől. Tehát az osztály nem felelős a függőségeinek létrehozásáért vagy inicializálásáért, hanem ezeket a függőségeket egy külső kód (ez lehet egy DI konténer is) biztosítja számára. Az előnye az, hogy nagyobb rugalmasságot tesz lehetővé a kódban, jobb érthetőséget és könnyebb tesztelhetőséget biztosít az alkalmazás számára, mivel a függőségek könnyen cserélhetők és izolálhatók a kód többi részétől. További információ a Mi az a Dependency Injection? fejezetben.
Dependency Injection konténer
A Dependency Injection konténer (más néven DI konténer vagy IoC konténer) egy eszköz, amely gondoskodik a függőségek létrehozásáról és kezeléséről az alkalmazásban (azaz a szolgáltatásokról). A konténernek általában van egy konfigurációja, amely meghatározza, hogy mely osztályok függenek más osztályoktól, milyen konkrét függőség-implementációkat kell használni, és hogyan kell ezeket a függőségeket létrehozni. Ezután a konténer létrehozza ezeket az objektumokat, és biztosítja őket azoknak az osztályoknak, amelyeknek szükségük van rájuk. További információ a Mi az a DI konténer? fejezetben.
Escapelés
Az escapelés a speciális jelentéssel bíró karakterek átalakítása más, megfelelő szekvenciákra egy adott kontextusban. Példa: egy idézőjelekkel határolt karakterláncba idézőjelet akarunk írni. Mivel az idézőjelnek a karakterlánc kontextusában speciális jelentése van, és egyszerű beírása a karakterlánc lezárásaként lenne értelmezve, más, megfelelő szekvenciával kell beírni. Hogy pontosan milyennel, azt a kontextus szabályai határozzák meg.
Szűrő (korábban helper)
A sablonokban a szűrő fogalma alatt általában egy olyan függvényt értünk, amely segít az adatok módosításában vagy újraformázásában a végső megjelenéshez. A sablonok rendelkeznek néhány standard szűrővel.
Érvénytelenítés
Egy snippet értesítése arról, hogy újra kell rajzolnia magát. Más jelentésben a cache tartalmának törlése is.
JSON
Adatcsere formátum, amely a JavaScript szintaxisán alapul (annak részhalmaza). A pontos specifikációt a www.json.org oldalon találja.
Komponens
Az alkalmazás újrafelhasználható része. Lehet egy oldal vizuális része, ahogy azt a Komponensek írása fejezet leírja, vagy a komponens fogalma alatt a Component osztályt is értjük (egy ilyen komponensnek nem kell vizuálisnak lennie).
Vezérlő karakterek
A vezérlő karakterek láthatatlan karakterek, amelyek előfordulhatnak a szövegben, és esetleg problémákat okozhatnak. Tömeges eltávolításukhoz a fájlokból használhatja a Code Checker eszközt, és egy változóból való eltávolításukhoz a Strings::normalize() függvényt.
Eventek (események)
Az esemény egy várt helyzet egy objektumban, amelynek bekövetkezésekor meghívódnak az ún. handlerek, azaz az eseményre reagáló callbackek (példa). Esemény lehet például egy űrlap elküldése, egy felhasználó bejelentkezése stb. Az események tehát az Inversion of Control egy formája.
Például a felhasználó bejelentkezése a Nette\Security\User::login()
metódusban történik. A
User
objektumnak van egy nyilvános $onLoggedIn
változója, ami egy tömb, amelyhez bárki hozzáadhat
egy callbacket. Abban a pillanatban, amikor a felhasználó bejelentkezik, a login()
metódus meghívja az összes
callbacket a tömbben. Az onXyz
formátumú változónév egy konvenció, amelyet az egész Nette-ben
használnak.
Latte
Az egyik legfejlettebb sablonrendszer.
Modell
A modell az egész alkalmazás adat- és különösen funkcionális alapja. Tartalmazza az egész alkalmazáslogikát (üzleti logika kifejezést is használják). Ez az M az MVC-ből vagy MVP-ből. Bármilyen felhasználói művelet (bejelentkezés, áru kosárba helyezése, érték módosítása az adatbázisban) a modell egy műveletét jelenti.
A modell kezeli a belső állapotát, és kifelé egy szilárdan meghatározott interfészt kínál. Ennek az interfésznek a függvényeinek hívásával lekérdezhetjük vagy módosíthatjuk az állapotát. A modell nem tud a view vagy a controller létezéséről.
Model-View-Controller
Szoftverarchitektúra, amely abból az igényből született, hogy a grafikus felülettel rendelkező alkalmazásoknál szétválasszák a kezelő kódot (controller) az alkalmazáslogikai kódtól (modell) és az adatokat megjelenítő kódtól (view). Ezzel egyrészt átláthatóbbá teszi az alkalmazást, megkönnyíti a jövőbeli fejlesztést, és lehetővé teszi az egyes részek külön tesztelését.
Model-View-Presenter
A Model-View-Controller-ből származó architektúra.
Modul
A modul az alkalmazás logikai része. Tipikus elrendezésben ez egy presenter- és sabloncsoport, amely egy adott
funkcionalitási területet kezel. A modulokat különálló könyvtárakba
helyezzük, mint például Front/
, Admin/
vagy Shop/
.
Például egy e-shopot feloszthatunk:
- Frontend (
Shop/
) a termékek böngészésére és vásárlásra - Ügyfél szekció (
Customer/
) a rendelések kezelésére - Adminisztráció (
Admin/
) az üzemeltető számára
Technikailag ezek hagyományos könyvtárak, de az áttekinthető tagolásnak köszönhetően segítenek az alkalmazás
skálázásában. Az Admin:Product:List
presenter fizikailag például az
app/Presentation/Admin/Product/List/
könyvtárban lesz elhelyezve (lásd presenter mapping).
Namespace
Névtér, a PHP nyelv része az 5.3-as verziótól és néhány más programozási nyelvé, amely lehetővé teszi olyan osztályok használatát, amelyek különböző könyvtárakban ugyanazzal a névvel rendelkeznek, anélkül, hogy névütközés történne. Lásd a PHP dokumentációt.
Presenter
A Presenter egy olyan objektum, amely fogadja a router által a HTTP kérésből lefordított kérést, és generál egy választ. A válasz lehet egy HTML oldal, kép, XML dokumentum, fájl a lemezen, JSON, átirányítás vagy bármi, amit kitalál.
Általában a presenter fogalma alatt a Nette\Application\UI\Presenter osztály leszármazottját értjük. A beérkező kérések alapján lefuttatja a megfelelő akciókat és rendereli a sablonokat.
Router
Kétirányú fordító a HTTP kérés / URL és a presenter akció között. A kétirányú azt jelenti, hogy a HTTP kérésből levezethető a presenter akció, de fordítva is, az akcióhoz generálható a megfelelő URL. További információ az URL útválasztás fejezetben.
SameSite cookie
A SameSite cookie-k mechanizmust biztosítanak annak felismerésére, hogy mi vezetett az oldal betöltéséhez. Három
értéke lehet: Lax
, Strict
és None
(ez HTTPS-t igényel). Ha az oldalra irányuló
kérés közvetlenül a webhelyről érkezik, vagy a felhasználó közvetlenül a címsorba írva vagy egy könyvjelzőre
kattintva nyitja meg az oldalt, a böngésző elküldi a szervernek az összes cookie-t (azaz a Lax
,
Strict
és None
jelzőkkel). Ha a felhasználó egy másik webhelyről származó linken keresztül
kattint a webhelyre, a Lax
és None
jelzőkkel ellátott cookie-k kerülnek átadásra a szervernek. Ha
a kérés más módon jön létre, például egy másik webhelyről küldött POST űrlap elküldésével, iframe-en belüli
betöltéssel, JavaScript segítségével stb., csak a None
jelzővel ellátott cookie-k kerülnek elküldésre.
Szolgáltatás
A Dependency Injection kontextusában szolgáltatásnak nevezzük azt az objektumot, amelyet a DI konténer hoz létre és kezel. A szolgáltatás könnyen helyettesíthető egy másik implementációval, például tesztelési célokra vagy az alkalmazás viselkedésének megváltoztatására anélkül, hogy módosítani kellene a szolgáltatást használó kódot.
Snippet
Kivágás, az oldal egy része, amelyet önállóan újra lehet rajzolni egy AJAX kérés során.
View
A View, azaz a nézet, az alkalmazás azon rétege, amely a kérés eredményének megjelenítéséért felelős. Általában sablonrendszert használ, és tudja, hogyan kell megjeleníteni az adott komponenst vagy a modellből kapott eredményt.