Fogalomtár
AJAX
Aszinkron JavaScript és XML – a HTTP protokollon keresztüli kliens-szerver kommunikáció technológiája, amely nem teszi szükségessé az egész oldal újratöltését minden egyes kérés során. A betűszó ellenére az XML helyett gyakran JSON formátumot használnak.
Bemutató művelet
A prezenter logikai része, amely egy műveletet hajt végre, például egy termékoldal megjelenítése, egy felhasználó kijelentkezése stb. Egy bemutatóhoz több művelet is tartozhat.
BOM
Az úgynevezett byte order mask egy speciális első karakter egy fájlban, és a kódolásban a bájtsorrendet jelzi. Néhány szerkesztő automatikusan tartalmazza, gyakorlatilag láthatatlan, de problémákat okoz a fejlécekkel és a PHP-n belülről történő kimeneti küldéssel. A Code Checker segítségével tömegesen eltávolítható.
Vezérlő
A vezérlő feldolgozza a felhasználó kéréseit, és azok alapján meghívja az adott alkalmazás logikáját (azaz a modellt), majd meghívja a nézetet az adatok megjelenítéséhez. A kontrollerek analógiája a Nette Frameworkben a prezenterek.
Oldalközi szkriptelés (XSS)
A Cross-Site Scripting egy webhely megzavarásának módszere, amely a nem kimentett bemenetet használja. A támadó saját HTML- vagy JavaScript-kódot juttathat be, és megváltoztathatja az oldal kinézetét, vagy akár érzékeny információkat is gyűjthet a felhasználókról. Az XSS elleni védelem egyszerű: az összes karakterlánc és bemenet következetes és helyes escapingje.
A Nette Framework egy vadonatúj technológiával, a Context-Aware Escapinggel áll elő, amely örökre megszabadítja Önt a Cross-Site Scripting kockázatoktól. Az összes bemenetet automatikusan eszkábálja az adott kontextus alapján, így lehetetlen, hogy egy programozó véletlenül elfelejtsen valamit.
Oldalközi kérés meghamisítása (CSRF)
A Cross-Site Request Forgery támadás lényege, hogy a támadó egy olyan oldal meglátogatására csalja az áldozatot, amely némán végrehajt egy kérést az áldozat böngészőjében a szerver felé, ahol az áldozat éppen bejelentkezve van, és a szerver azt hiszi, hogy a kérést az áldozat akaratából tette. A szerver az áldozat személyazonossága alatt, de az áldozat tudta nélkül hajt végre egy bizonyos műveletet. Ez lehet adatok módosítása vagy törlése, üzenet küldése stb.
A Nette Framework automatikusan védi a prezenterekben lévő űrlapokat és jeleket az ilyen típusú támadásoktól. Ez úgy történik, hogy megakadályozza, hogy egy másik tartományból küldjék vagy hívják őket.
Függőségi injekció
A Dependency Injection (DI) egy tervezési minta, amely megmondja, hogyan lehet az objektumok létrehozását elválasztani a függőségüktől. Vagyis egy osztály nem felelős a függőségek létrehozásáért vagy inicializálásáért, hanem ezeket a függőségeket külső kód biztosítja (ami lehet egy DI konténer is). Ennek előnye, hogy nagyobb kódrugalmasságot, jobb olvashatóságot és könnyebb alkalmazástesztelést tesz lehetővé, mivel a függőségek könnyen cserélhetők és elszigetelhetők a kód más részeitől. További információért lásd: Mi a Dependency Injection?
Függőségi injektálás konténer
A Dependency Injection konténer (más néven DI konténer vagy IoC konténer) egy olyan eszköz, amely a függőségek létrehozását és kezelését kezeli egy alkalmazásban (vagy szolgáltatásban). A konténer általában rendelkezik egy konfigurációval, amely meghatározza, hogy mely osztályok függenek más osztályoktól, milyen konkrét függőségi implementációkat használjon, és hogyan hozza létre ezeket a függőségeket. A konténer ezután létrehozza ezeket az objektumokat, és biztosítja azokat az osztályok számára, amelyeknek szükségük van rájuk. További információért lásd: Mi az a DI konténer?
A megkerülése
Az Escaping az adott kontextusban különleges jelentéssel bíró karakterek átalakítása más, egyenértékű
szekvenciákká. Példa: Idézőjeleket akarunk írni idézőjelekkel körülvett karakterláncba. Mivel az idézőjelek
különleges jelentéssel bírnak az idézőjelekkel körülvett karakterlánc kontextusában, szükség van egy másik
egyenértékű szekvencia használatára. A konkrét szekvenciát a kontextus szabályai határozzák meg (pl. \"
a
PHP idézőjelekkel zárt karakterláncában, "
a HTML attribútumokban stb.).
Szűrő (korábban Helper)
Szűrő funkció. A sablonokban a szűrő egy olyan függvény, amely segít megváltoztatni vagy formázni az adatokat a kimeneti formára. A sablonok számos szabványos szűrővel rendelkeznek előre definiálva.
Érvénytelenítés
Értesítés egy újraolvasandó részletről. Más összefüggésben a gyorsítótár törlése is.
JSON
JavaScript szintaxison alapuló adatcsere formátum (ez annak részhalmaza). Pontos specifikációja a www.json.org oldalon található.
Komponens
Egy alkalmazás újrafelhasználható része. Lehet egy oldal vizuális része, ahogyan azt az components fejezetben leírtuk, vagy a kifejezés állhat a Component osztályra is (egy ilyen komponensnek nem kell vizuálisnak lennie).
Vezérlő karakterek
A vezérlő karakterek olyan láthatatlan karakterek, amelyek előfordulhatnak egy szövegben, és esetleg problémákat okozhatnak. A fájlokból való tömeges eltávolításukhoz a Code Checker, a változókból való eltávolításukhoz a Strings::normalize() függvényt használhatjuk.
Események
Az esemény egy olyan várható helyzet az objektumban, amelynek bekövetkezésekor az úgynevezett kezelőket, azaz az eseményre reagáló visszahívókat (minta) hívja meg. Az esemény lehet például űrlapküldés, felhasználói bejelentkezés stb. Az események tehát a Inversion of Control egy formája.
Például egy felhasználói bejelentkezés a Nette\Security\User::login()
metódusban történik. A
User
objektumnak van egy nyilvános változója $onLoggedIn
, amely egy tömb, amelyhez bárki
hozzáadhat egy visszahívást. Amint a felhasználó bejelentkezik, a login()
metódus meghívja a tömbben lévő
összes callbacket. A változó neve a onXyz
formában a Nette egész területén használt konvenció.
Latte
Az egyik leginnovatívabb templating rendszer.
Modell
A modell az egész alkalmazás adat- és funkcióalapját jelenti. Tartalmazza a teljes alkalmazási logikát (néha „üzleti logikának“ is nevezik). Ez a M a MVC vagy MPV M****-jének **M. Minden felhasználói művelet (bejelentkezés, kosárba helyezés, adatbázis-érték módosítása) a modell műveletét jelenti.
A modell kezeli a belső állapotát, és nyilvános interfészt biztosít. Ennek az interfésznek a meghívásával vehetjük át vagy változtathatjuk meg az állapotát. A modell nem tud a nézet vagy a vezérlő létezéséről, a modell teljesen független tőlük.
Modell-nézet-vezérlő
Szoftverarchitektúra, amely a GUI-alkalmazások fejlesztésénél alakult ki, hogy elválassza a folyamatkezelés kódját (controller) az alkalmazási logika kódjától (model) és az adatmegjelenítő kódtól (view). Így a kód jobban érthető, megkönnyíti a későbbi fejlesztést, és lehetővé teszi a különálló részek külön tesztelését.
Modell-nézet-bemutató
Model-View-Controller alapú architektúra.
Modul
A modul a Nette Frameworkben bemutatók és sablonok, esetleg komponensek és modellek gyűjteményét jelenti, amelyek adatokat szolgáltatnak egy bemutatónak. Tehát egy alkalmazás bizonyos logikai része.
Például egy webáruháznak három modulja lehet:
- Termékkatalógus a kosárral.
- Adminisztráció a vásárló számára.
- Adminisztráció a boltvezető számára.
Névtér
A névtér a PHP nyelv 5.3-as verziójától kezdve és néhány más programozási nyelvben is megtalálható. Segít elkerülni a névütközéseket (pl. két azonos nevű osztály), amikor különböző könyvtárakat használunk együtt. További részletekért lásd a PHP dokumentációját.
Bemutató
A Presenter egy objektum, amely átveszi a HTTP-kérésből a router által lefordított kérést, és választ generál. A válasz lehet HTML oldal, kép, XML dokumentum, fájl, JSON, átirányítás vagy bármi, ami eszedbe jut.
Presenter alatt általában a Nette\Application\UI\Presenter osztály leszármazottját értik. A kérések alatt a megfelelő műveleteket futtatja és a sablonokat rendereli.
Router
Kétirányú fordító a HTTP-kérés/URL és a prezentáló művelet között. A kétirányúság azt jelenti, hogy nem csak a HTTP-kérésből lehet levezetni egy prezenter-akciót, hanem a megfelelő URL-t is lehet generálni egy akcióhoz. Lásd bővebben az URL útválasztásról szóló fejezetben.
SameSite cookie
A SameSite cookie-k egy olyan mechanizmust biztosítanak, amely felismeri, hogy mi vezetett az oldal betöltéséhez. Három
értéke lehet: Lax
, Strict
és None
(ez utóbbi 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 beírva vagy egy
könyvjelzőre kattintva nyitja meg az oldalt, a böngésző az összes cookie-t elküldi a szervernek (azaz a Lax
,
Strict
és None
jelekkel). Ha a felhasználó egy másik webhelyről származó hivatkozáson keresztül
kattint az oldalra, a Lax
és None
jelzővel ellátott cookie-kat továbbítja a szervernek. Ha a
kérés más módon történik, például egy másik webhelyről származó POST űrlap elküldésével, iframe-en belüli
betöltéssel, JavaScript használatával stb., csak a None
jelű cookie-kat küldi a rendszer.
Szolgáltatás
A Dependency Injection kontextusában a szolgáltatás olyan objektumra utal, amelyet egy DI konténer hoz létre és kezel. Egy szolgáltatás könnyen lecserélhető egy másik implementációra, például tesztelési céllal vagy az alkalmazás viselkedésének megváltoztatására, anélkül, hogy a szolgáltatást használó kódot módosítani kellene.
Snippet
Egy olyan oldalrészlet, amely egy AJAX-kérés során külön-külön újra megjeleníthető.
Nézet
A nézet az alkalmazás egy olyan rétege, amely a kérés eredményeinek megjelenítéséért felelős. Általában templating rendszert használ, és tudja, hogyan kell megjeleníteni a modellből vett komponenseket vagy eredményeket.