Nette Documentation Preview

syntax
Glosar izrazov
**************


AJAX .[#toc-ajax]
-----------------
Asinhroni JavaScript in XML - tehnologija za komunikacijo med odjemalcem in strežnikom prek protokola HTTP brez potrebe po ponovnem nalaganju celotne strani med vsako zahtevo. Kljub kratici se namesto XML pogosto uporablja format [JSON |#JSON].


Akcija predavatelja .[#toc-presenter-action]
--------------------------------------------
Logični del [predstavnika |#presenter], ki izvaja eno dejanje, na primer prikaže stran izdelka, odjavi uporabnika itd. En predstavnik ima lahko več dejanj.


BOM
---
Tako imenovana *maska vrstnega reda bajtov* je poseben prvi znak datoteke in označuje vrstni red bajtov v kodiranju. Nekateri urejevalniki jo vključijo samodejno in je praktično nevidna, vendar povzroča težave pri glavi in pošiljanju izpisa znotraj PHP. Za množično odstranjevanje lahko uporabite [program Code Checker |code-checker:].


Nadzornik .[#toc-controller]
----------------------------
Krmilnik obdeluje zahteve uporabnika in na njihovi podlagi pokliče določeno aplikacijsko logiko (tj. [model |#model]), nato pa pokliče [pogled |#view] za prikazovanje podatkov. Analogija kontrolerjem so [predstavniki |#presenter] v okolju Nette Framework.


Navzkrižno pisanje na spletnem mestu (XSS) .[#toc-cross-site-scripting-xss]
---------------------------------------------------------------------------
Cross-Site Scripting je metoda motenja spletnega mesta z uporabo neoznačenega vnosa. Napadalec lahko vnese lastno kodo HTML ali JavaScript in spremeni videz strani ali celo zbere občutljive podatke o uporabnikih. Zaščita pred XSS je preprosta: dosledno in pravilno eskapiranje vseh nizov in vnosov.

Okvir Nette je na voljo povsem nova tehnologija [Context-Aware Escaping |latte:safety-first#context-aware-escaping], s katero se boste za vedno znebili tveganj Cross-Site Scripting. Na podlagi danega konteksta samodejno eskapira vse vhode, zato je nemogoče, da bi programer na kaj pomotoma pozabil.


Križanje spletnih strani (CSRF) .[#toc-cross-site-request-forgery-csrf]
-----------------------------------------------------------------------
Napad Cross-Site Request Forgery pomeni, da napadalec žrtev zvabi k obisku strani, ki v brskalniku žrtve tiho izvede zahtevo v strežnik, v katerega je žrtev trenutno prijavljena, strežnik pa verjame, da je zahtevo po svoji volji izvedla žrtev. Strežnik izvede določeno dejanje pod identiteto žrtve, vendar se žrtev tega ne zaveda. To je lahko spreminjanje ali brisanje podatkov, pošiljanje sporočila itd.

Okvir Nette **samodejno ščiti obrazce in signale v predstavitvah** pred tovrstnimi napadi. To stori tako, da prepreči njihovo pošiljanje ali klicanje iz druge domene.


Vključevanje odvisnosti (Dependency Injection) .[#toc-dependency-injection]
---------------------------------------------------------------------------
Vbrizgavanje odvisnosti (Dependency Injection, DI) je načrtovalski vzorec, ki določa, kako ločiti ustvarjanje objektov od njihovih odvisnosti. To pomeni, da razred ni odgovoren za ustvarjanje ali inicializacijo svojih odvisnosti, temveč te odvisnosti zagotovi zunanja koda (ki lahko vključuje [vsebnik DI |#Dependency Injection container]). Prednost tega je, da omogoča večjo prilagodljivost kode, boljšo berljivost in lažje testiranje aplikacije, saj so odvisnosti zlahka zamenljive in ločene od drugih delov kode. Za več informacij glejte [Kaj je vbrizgavanje odvisnosti |dependency-injection:introduction]?


Zabojnik za vbrizgavanje odvisnosti .[#toc-dependency-injection-container]
--------------------------------------------------------------------------
Posoda za vbrizgavanje odvisnosti (tudi posoda DI ali posoda IoC) je orodje, ki skrbi za ustvarjanje in upravljanje odvisnosti v aplikaciji (ali [storitvah |#service]). Vsebnik ima običajno konfiguracijo, ki določa, kateri razredi so odvisni od drugih razredov, katere posebne implementacije odvisnosti je treba uporabiti in kako ustvariti te odvisnosti. Vsebnik nato ustvari te objekte in jih zagotovi razredom, ki jih potrebujejo. Za več informacij glejte [Kaj je vsebnik DI |dependency-injection:container]?


Izogibanje .[#toc-escaping]
---------------------------
Escaping je pretvorba znakov s posebnim pomenom v danem kontekstu v drugo enakovredno zaporedje. Primer: Želimo zapisati narekovaje v niz z narekovaji. Ker imajo narekovaji v kontekstu z narekovaji zaprtega niza poseben pomen, je treba uporabiti drugo enakovredno zaporedje. Konkretno zaporedje določajo pravila konteksta (npr. `\"` v PHP-jevem nizu z narekovaji, `"` v atributih HTML itd.).


Filter (prej pomočnik) .[#toc-filter-formerly-helper]
-----------------------------------------------------
Funkcija filtra. V predlogah je [filter |latte:syntax#filters] funkcija, ki pomaga spremeniti ali oblikovati podatke v izhodno obliko. Predloge imajo vnaprej definiranih več [standardnih filtrov |latte:filters].


Invalidacija .[#toc-invalidation]
---------------------------------
Obvestilo o [snippetu |#snippet] za ponovno prikazovanje. V drugem kontekstu tudi brisanje predpomnilnika.


JSON .[#toc-json]
-----------------
Format za izmenjavo podatkov, ki temelji na sintaksi JavaScript (je njena podmnožica). Natančna specifikacija je na voljo na naslovu www.json.org.


Komponenta .[#toc-component]
----------------------------
Del aplikacije, ki ga je mogoče ponovno uporabiti. Lahko je vizualni del strani, kot je opisano v poglavju [application:components], lahko pa izraz pomeni tudi razred [Component |component-model:] (ni nujno, da je takšna komponenta vizualna).


Kontrolni znaki .[#toc-control-characters]
------------------------------------------
Kontrolni znaki so nevidni znaki, ki se lahko pojavijo v besedilu in sčasoma povzročijo nekaj težav. Za njihovo množično odstranjevanje iz datotek lahko uporabite [program Code Checker |code-checker:], za njihovo odstranjevanje iz spremenljivke pa funkcijo [Strings::normalize() |utils:strings#normalize].


Dogodki .[#toc-events]
----------------------
Dogodek je pričakovana situacija v objektu, ko se zgodi, se pokličejo tako imenovani handlerji, tj. povratni klici, ki se odzovejo na dogodek ("vzorec":https://gist.github.com/dg/332cdd51bdf7d66a6d8003b134508a38). Dogodek je lahko na primer oddaja obrazca, prijava uporabnika itd. Dogodki so torej oblika *inverzije nadzora*.

Na primer, prijava uporabnika se zgodi v metodi `Nette\Security\User::login()`. Objekt `User` ima javno spremenljivko `$onLoggedIn`, ki je polje, v katerega lahko vsakdo doda povratni klic. Takoj ko se uporabnik prijavi, metoda `login()` pokliče vse povratne klice v polju. Ime spremenljivke v obliki `onXyz` je konvencija, ki se uporablja v celotnem sistemu Nette.


Latte .[#toc-latte]
-------------------
Eden najbolj inovativnih [sistemov za oblikovanje predlog |latte:] doslej.


Model .[#toc-model]
-------------------
Model predstavlja podatkovno in funkcijsko osnovo celotne aplikacije. Vključuje celotno logiko aplikacije (včasih imenovano tudi "poslovna logika"). To je **M** **M**VC ali MPV. Vsako dejanje uporabnika (prijava, dajanje stvari v košarico, sprememba vrednosti podatkovne zbirke) predstavlja dejanje modela.

Model upravlja svoje notranje stanje in zagotavlja javni vmesnik. S klicem tega vmesnika lahko prevzamemo ali spremenimo njegovo stanje. Model ne ve za obstoj [pogleda |#view] ali [krmilnika |#controller], model je od njiju popolnoma neodvisen.


Model-pogled-kontroler .[#toc-model-view-controller]
----------------------------------------------------
Programska arhitektura, ki se je pojavila pri razvoju aplikacij grafičnega vmesnika, da bi ločila kodo za nadzor pretoka ([kontroler |#controller]) od kode aplikacijske logike ([model) |#model] in kode za prikazovanje podatkov ([pogled |#view]). Na ta način je koda bolje razumljiva, olajša nadaljnji razvoj in omogoča ločeno testiranje ločenih delov.


Model-pogled-predstavnik .[#toc-model-view-presenter]
-----------------------------------------------------
Arhitektura, ki temelji na [Model-View-Controller |#Model-View-Controller].


Modul .[#toc-module]
--------------------
[Modul |application:modules] v ogrodju Nette predstavlja zbirko predstavnikov in predlog, lahko tudi komponent in modelov, ki predstavljajo podatke za predstavnika. Tako je določen logični del aplikacije.

Na primer, e-trgovina ima lahko tri module:
1) Katalog izdelkov s košarico.
2) Administracija za stranko.
3) Administracija za lastnika trgovine.


Imenski prostor .[#toc-namespace]
---------------------------------
Prostor imen je značilnost jezika PHP od različice 5.3 naprej in tudi nekaterih drugih programskih jezikov. Pomaga preprečiti kolizijo imen (npr. dva razreda z istim imenom) pri skupni uporabi različnih knjižnic. Za več podrobnosti glejte [dokumentacijo PHP |https://www.php.net/manual/en/language.namespaces.rationale.php].


Predavatelj .[#toc-presenter]
-----------------------------
Presenter je objekt, ki prevzame [zahtevo, |api:Nette\Application\Request] kot jo usmerjevalnik prevede iz zahteve HTTP, in ustvari [odgovor |api:Nette\Application\Response]. Odgovor je lahko stran HTML, slika, dokument XML, datoteka, JSON, preusmeritev ali kar koli si zamislite.

S predstavnikom je običajno mišljen potomec razreda [api:Nette\Application\UI\Presenter]. Z zahtevami izvaja ustrezna [dejanja |application:presenters#life-cycle-of-presenter] in izrisuje predloge.


Usmerjevalnik .[#toc-router]
----------------------------
Dvosmerni prevajalnik med zahtevo HTTP/naslovom URL in dejanjem predstavnika. Dvosmerno pomeni, da ni mogoče le izpeljati [predstavitvene akcije |#presenter action] iz zahteve HTTP, temveč tudi ustvariti ustrezen URL za akcijo. Več informacij najdete v poglavju o [usmerjanju URL |application:routing].


Piškotek SameSite .[#toc-samesite-cookie]
-----------------------------------------
Piškotki SameSite zagotavljajo mehanizem za prepoznavanje, kaj je privedlo do nalaganja strani. Ima lahko tri vrednosti: `Lax`, `Strict` in `None` (slednja zahteva HTTPS). Če zahteva po strani prihaja neposredno s spletnega mesta ali če uporabnik odpre stran z neposrednim vnosom v naslovno vrstico ali klikom na zaznamek, brskalnik pošlje strežniku vse piškotke (tj. z oznakami `Lax`, `Strict` in `None`). Če uporabnik klikne na spletno mesto prek povezave z drugega spletnega mesta, se strežniku posredujejo piškotki z zastavicama `Lax` in `None`. Če je zahteva poslana na drug način, na primer z oddajo obrazca POST z drugega spletnega mesta, nalaganjem znotraj iframe, uporabo JavaScripta itd., se pošljejo samo piškotki z zastavico `None`.


Storitev .[#toc-service]
------------------------
V kontekstu vrivanja odvisnosti se storitev nanaša na objekt, ki ga ustvari in upravlja vsebnik DI. Storitev je mogoče preprosto zamenjati z drugo izvedbo, na primer za namene testiranja ali za spremembo obnašanja aplikacije, ne da bi bilo treba spreminjati kodo, ki uporablja storitev.


Utrinek .[#toc-snippet]
-----------------------
Odlomek strani, ki se lahko ločeno ponovno prikaže med zahtevo [AJAX |#AJAX].


Pogled .[#toc-view]
-------------------
Pogled je plast aplikacije, ki je odgovorna za upodabljanje rezultatov zahtevkov. Običajno uporablja sistem šablon in ve, kako naj prikaže svoje komponente ali rezultate, prevzete iz modela.



{{leftbar: www:@menu-common}}
{{priority: -2}}

Glosar izrazov

AJAX

Asinhroni JavaScript in XML – tehnologija za komunikacijo med odjemalcem in strežnikom prek protokola HTTP brez potrebe po ponovnem nalaganju celotne strani med vsako zahtevo. Kljub kratici se namesto XML pogosto uporablja format JSON.

Akcija predavatelja

Logični del predstavnika, ki izvaja eno dejanje, na primer prikaže stran izdelka, odjavi uporabnika itd. En predstavnik ima lahko več dejanj.

BOM

Tako imenovana maska vrstnega reda bajtov je poseben prvi znak datoteke in označuje vrstni red bajtov v kodiranju. Nekateri urejevalniki jo vključijo samodejno in je praktično nevidna, vendar povzroča težave pri glavi in pošiljanju izpisa znotraj PHP. Za množično odstranjevanje lahko uporabite program Code Checker.

Nadzornik

Krmilnik obdeluje zahteve uporabnika in na njihovi podlagi pokliče določeno aplikacijsko logiko (tj. model), nato pa pokliče pogled za prikazovanje podatkov. Analogija kontrolerjem so predstavniki v okolju Nette Framework.

Navzkrižno pisanje na spletnem mestu (XSS)

Cross-Site Scripting je metoda motenja spletnega mesta z uporabo neoznačenega vnosa. Napadalec lahko vnese lastno kodo HTML ali JavaScript in spremeni videz strani ali celo zbere občutljive podatke o uporabnikih. Zaščita pred XSS je preprosta: dosledno in pravilno eskapiranje vseh nizov in vnosov.

Okvir Nette je na voljo povsem nova tehnologija Context-Aware Escaping, s katero se boste za vedno znebili tveganj Cross-Site Scripting. Na podlagi danega konteksta samodejno eskapira vse vhode, zato je nemogoče, da bi programer na kaj pomotoma pozabil.

Križanje spletnih strani (CSRF)

Napad Cross-Site Request Forgery pomeni, da napadalec žrtev zvabi k obisku strani, ki v brskalniku žrtve tiho izvede zahtevo v strežnik, v katerega je žrtev trenutno prijavljena, strežnik pa verjame, da je zahtevo po svoji volji izvedla žrtev. Strežnik izvede določeno dejanje pod identiteto žrtve, vendar se žrtev tega ne zaveda. To je lahko spreminjanje ali brisanje podatkov, pošiljanje sporočila itd.

Okvir Nette samodejno ščiti obrazce in signale v predstavitvah pred tovrstnimi napadi. To stori tako, da prepreči njihovo pošiljanje ali klicanje iz druge domene.

Vključevanje odvisnosti (Dependency Injection)

Vbrizgavanje odvisnosti (Dependency Injection, DI) je načrtovalski vzorec, ki določa, kako ločiti ustvarjanje objektov od njihovih odvisnosti. To pomeni, da razred ni odgovoren za ustvarjanje ali inicializacijo svojih odvisnosti, temveč te odvisnosti zagotovi zunanja koda (ki lahko vključuje vsebnik DI). Prednost tega je, da omogoča večjo prilagodljivost kode, boljšo berljivost in lažje testiranje aplikacije, saj so odvisnosti zlahka zamenljive in ločene od drugih delov kode. Za več informacij glejte Kaj je vbrizgavanje odvisnosti?

Zabojnik za vbrizgavanje odvisnosti

Posoda za vbrizgavanje odvisnosti (tudi posoda DI ali posoda IoC) je orodje, ki skrbi za ustvarjanje in upravljanje odvisnosti v aplikaciji (ali storitvah). Vsebnik ima običajno konfiguracijo, ki določa, kateri razredi so odvisni od drugih razredov, katere posebne implementacije odvisnosti je treba uporabiti in kako ustvariti te odvisnosti. Vsebnik nato ustvari te objekte in jih zagotovi razredom, ki jih potrebujejo. Za več informacij glejte Kaj je vsebnik DI?

Izogibanje

Escaping je pretvorba znakov s posebnim pomenom v danem kontekstu v drugo enakovredno zaporedje. Primer: Želimo zapisati narekovaje v niz z narekovaji. Ker imajo narekovaji v kontekstu z narekovaji zaprtega niza poseben pomen, je treba uporabiti drugo enakovredno zaporedje. Konkretno zaporedje določajo pravila konteksta (npr. \" v PHP-jevem nizu z narekovaji, " v atributih HTML itd.).

Filter (prej pomočnik)

Funkcija filtra. V predlogah je filter funkcija, ki pomaga spremeniti ali oblikovati podatke v izhodno obliko. Predloge imajo vnaprej definiranih več standardnih filtrov.

Invalidacija

Obvestilo o snippetu za ponovno prikazovanje. V drugem kontekstu tudi brisanje predpomnilnika.

JSON

Format za izmenjavo podatkov, ki temelji na sintaksi JavaScript (je njena podmnožica). Natančna specifikacija je na voljo na naslovu www.json.org.

Komponenta

Del aplikacije, ki ga je mogoče ponovno uporabiti. Lahko je vizualni del strani, kot je opisano v poglavju components, lahko pa izraz pomeni tudi razred Component (ni nujno, da je takšna komponenta vizualna).

Kontrolni znaki

Kontrolni znaki so nevidni znaki, ki se lahko pojavijo v besedilu in sčasoma povzročijo nekaj težav. Za njihovo množično odstranjevanje iz datotek lahko uporabite program Code Checker, za njihovo odstranjevanje iz spremenljivke pa funkcijo Strings::normalize().

Dogodki

Dogodek je pričakovana situacija v objektu, ko se zgodi, se pokličejo tako imenovani handlerji, tj. povratni klici, ki se odzovejo na dogodek (vzorec). Dogodek je lahko na primer oddaja obrazca, prijava uporabnika itd. Dogodki so torej oblika inverzije nadzora.

Na primer, prijava uporabnika se zgodi v metodi Nette\Security\User::login(). Objekt User ima javno spremenljivko $onLoggedIn, ki je polje, v katerega lahko vsakdo doda povratni klic. Takoj ko se uporabnik prijavi, metoda login() pokliče vse povratne klice v polju. Ime spremenljivke v obliki onXyz je konvencija, ki se uporablja v celotnem sistemu Nette.

Latte

Eden najbolj inovativnih sistemov za oblikovanje predlog doslej.

Model

Model predstavlja podatkovno in funkcijsko osnovo celotne aplikacije. Vključuje celotno logiko aplikacije (včasih imenovano tudi „poslovna logika“). To je M MVC ali MPV. Vsako dejanje uporabnika (prijava, dajanje stvari v košarico, sprememba vrednosti podatkovne zbirke) predstavlja dejanje modela.

Model upravlja svoje notranje stanje in zagotavlja javni vmesnik. S klicem tega vmesnika lahko prevzamemo ali spremenimo njegovo stanje. Model ne ve za obstoj pogleda ali krmilnika, model je od njiju popolnoma neodvisen.

Model-pogled-kontroler

Programska arhitektura, ki se je pojavila pri razvoju aplikacij grafičnega vmesnika, da bi ločila kodo za nadzor pretoka (kontroler) od kode aplikacijske logike (model) in kode za prikazovanje podatkov (pogled). Na ta način je koda bolje razumljiva, olajša nadaljnji razvoj in omogoča ločeno testiranje ločenih delov.

Model-pogled-predstavnik

Arhitektura, ki temelji na Model-View-Controller.

Modul

Modul v ogrodju Nette predstavlja zbirko predstavnikov in predlog, lahko tudi komponent in modelov, ki predstavljajo podatke za predstavnika. Tako je določen logični del aplikacije.

Na primer, e-trgovina ima lahko tri module:

  1. Katalog izdelkov s košarico.
  2. Administracija za stranko.
  3. Administracija za lastnika trgovine.

Imenski prostor

Prostor imen je značilnost jezika PHP od različice 5.3 naprej in tudi nekaterih drugih programskih jezikov. Pomaga preprečiti kolizijo imen (npr. dva razreda z istim imenom) pri skupni uporabi različnih knjižnic. Za več podrobnosti glejte dokumentacijo PHP.

Predavatelj

Presenter je objekt, ki prevzame zahtevo, kot jo usmerjevalnik prevede iz zahteve HTTP, in ustvari odgovor. Odgovor je lahko stran HTML, slika, dokument XML, datoteka, JSON, preusmeritev ali kar koli si zamislite.

S predstavnikom je običajno mišljen potomec razreda Nette\Application\UI\Presenter. Z zahtevami izvaja ustrezna dejanja in izrisuje predloge.

Usmerjevalnik

Dvosmerni prevajalnik med zahtevo HTTP/naslovom URL in dejanjem predstavnika. Dvosmerno pomeni, da ni mogoče le izpeljati predstavitvene akcije iz zahteve HTTP, temveč tudi ustvariti ustrezen URL za akcijo. Več informacij najdete v poglavju o usmerjanju URL.

Piškotki SameSite zagotavljajo mehanizem za prepoznavanje, kaj je privedlo do nalaganja strani. Ima lahko tri vrednosti: Lax, Strict in None (slednja zahteva HTTPS). Če zahteva po strani prihaja neposredno s spletnega mesta ali če uporabnik odpre stran z neposrednim vnosom v naslovno vrstico ali klikom na zaznamek, brskalnik pošlje strežniku vse piškotke (tj. z oznakami Lax, Strict in None). Če uporabnik klikne na spletno mesto prek povezave z drugega spletnega mesta, se strežniku posredujejo piškotki z zastavicama Lax in None. Če je zahteva poslana na drug način, na primer z oddajo obrazca POST z drugega spletnega mesta, nalaganjem znotraj iframe, uporabo JavaScripta itd., se pošljejo samo piškotki z zastavico None.

Storitev

V kontekstu vrivanja odvisnosti se storitev nanaša na objekt, ki ga ustvari in upravlja vsebnik DI. Storitev je mogoče preprosto zamenjati z drugo izvedbo, na primer za namene testiranja ali za spremembo obnašanja aplikacije, ne da bi bilo treba spreminjati kodo, ki uporablja storitev.

Utrinek

Odlomek strani, ki se lahko ločeno ponovno prikaže med zahtevo AJAX.

Pogled

Pogled je plast aplikacije, ki je odgovorna za upodabljanje rezultatov zahtevkov. Običajno uporablja sistem šablon in ve, kako naj prikaže svoje komponente ali rezultate, prevzete iz modela.