Słowniczek pojęć

AJAX

Asynchronous JavaScript and XML – technologia wymiany informacji między klientem a serwerem za pomocą protokołu HTTP bez konieczności ponownego ładowania całej strony przy każdym żądaniu. Chociaż nazwa mogłaby sugerować, że dane są wysyłane tylko w formacie XML, powszechnie używany jest również format JSON.

Akcja presentera

Logiczna część presentera, która wykonuje jedną akcję. Na przykład wyświetla stronę produktu, wylogowuje użytkownika itp. Jeden presenter może mieć wiele akcji.

BOM

Tzw. byte order mark to specjalny pierwszy znak w pliku, który jest używany jako wskaźnik kolejności bajtów w kodowaniu. Niektóre edytory wstawiają go do plików. Jest praktycznie niewidoczny, ale powoduje problemy z wysyłaniem danych wyjściowych i nagłówków z PHP. Do masowego usuwania można użyć Code Checker.

Controller

Kontroler, który przetwarza żądania użytkownika i na ich podstawie wywołuje odpowiednią logikę aplikacji (tj. model), a następnie prosi view o wyrenderowanie danych. Odpowiednikiem kontrolerów w Nette Framework są presentery.

Cross-Site Scripting (XSS)

Cross-Site Scripting to metoda naruszania stron internetowych wykorzystująca nieprzetworzone dane wyjściowe. Atakujący może wstrzyknąć do strony swój własny kod, co pozwala mu zmodyfikować stronę lub nawet uzyskać poufne dane o odwiedzających. Przed XSS można się bronić tylko poprzez konsekwentne i poprawne przetwarzanie (escapowanie) wszystkich ciągów znaków.

Nette Framework wprowadza rewolucyjną technologię Context-Aware Escaping, która na zawsze uwolni Cię od ryzyka Cross-Site Scriptingu. Wszystkie dane wyjściowe są przetwarzane automatycznie, więc nie może się zdarzyć, że koder o czymś zapomni.

Cross-Site Request Forgery (CSRF)

Atak Cross-Site Request Forgery polega na tym, że atakujący zwabia ofiarę na stronę, która niepostrzeżenie w przeglądarce ofiary wykonuje żądanie do serwera, na którym ofiara jest zalogowana, a serwer zakłada, że żądanie zostało wykonane przez ofiarę z własnej woli. W ten sposób pod tożsamością ofiary wykonuje określoną czynność, o której ofiara nie wie. Może to być zmiana lub usunięcie danych, wysłanie wiadomości itp.

Nette Framework automatycznie chroni formularze i sygnały w prezenterach przed tego typu atakami. Robi to, uniemożliwiając ich wysłanie lub wywołanie z innej domeny.

Dependency Injection

Dependency Injection (DI) to wzorzec projektowy, który określa, jak oddzielić tworzenie obiektów od ich zależności. Oznacza to, że klasa nie jest odpowiedzialna za tworzenie ani inicjalizację swoich zależności, ale zamiast tego zależności te są dostarczane przez kod zewnętrzny (może to być również kontener DI). Zaletą jest to, że pozwala na większą elastyczność kodu, lepszą czytelność i łatwiejsze testowanie aplikacji, ponieważ zależności są łatwo zastępowalne i izolowane od pozostałych części kodu. Więcej w rozdziale Co to jest Dependency Injection?

Kontener Dependency Injection

Kontener Dependency Injection (także kontener DI lub kontener IoC) to narzędzie, które zajmuje się tworzeniem i zarządzaniem zależnościami w aplikacji (czyli usługami). Kontener zazwyczaj ma konfigurację, która definiuje, które klasy są zależne od innych klas, jakie konkretne implementacje zależności mają być użyte i jak te zależności mają być tworzone. Następnie kontener tworzy te obiekty i dostarcza je klasom, które ich potrzebują. Więcej w rozdziale Co to jest kontener DI?

Escapowanie

Escapowanie to konwersja znaków mających w danym kontekście specjalne znaczenie na inne odpowiadające sekwencje. Przykład: do ciągu ograniczonego cudzysłowami chcemy zapisać cudzysłów. Ponieważ cudzysłów ma w kontekście ciągu specjalne znaczenie i jego proste zapisanie byłoby rozumiane jako zakończenie ciągu, należy go zapisać inną odpowiadającą sekwencją. Jaką dokładnie, określają reguły kontekstu.

Filtr (wcześniej helper)

W szablonach pod pojęciem filtr zwykle rozumie się funkcję, która pomaga zmodyfikować lub przeformatować dane do ostatecznej postaci. Szablony dysponują kilkoma standardowymi filtrami.

Unieważnienie (Invalidation)

Powiadomienie snippetu, aby się przerysował. W innym znaczeniu także usunięcie zawartości cache.

JSON

Format wymiany danych oparty na składni JavaScript (jest jej podzbiorem). Dokładną specyfikację znajdziesz na stronie www.json.org.

Komponent

Reużywalna część aplikacji. Może to być wizualna część strony, jak opisuje rozdział Pisanie komponentów, lub pod pojęciem komponent rozumie się także klasę Component (taki komponent nie musi być wizualny).

Znaki kontrolne

Znaki kontrolne to niewidoczne znaki, które mogą występować w tekście i ewentualnie powodować problemy. Do ich masowego usuwania z plików możesz użyć Code Checker, a do usuwania ze zmiennej funkcji Strings::normalize().

Eventy (zdarzenia)

Zdarzenie to oczekiwana sytuacja w obiekcie, która gdy nastąpi, wywoływane są tzw. handlery, czyli callbacki reagujące na zdarzenie (przykład). Zdarzeniem może być np. wysłanie formularza, zalogowanie użytkownika itp. Zdarzenia są więc formą Inversion of Control.

Na przykład do zalogowania użytkownika dochodzi w metodzie Nette\Security\User::login(). Obiekt User ma publiczną zmienną $onLoggedIn, która jest tablicą, do której każdy może dodać callback. W momencie, gdy użytkownik się zaloguje, metoda login() wywołuje wszystkie callbacki w tablicy. Nazwa zmiennej w formacie onXyz jest konwencją używaną w całym Nette.

Latte

Jeden z najbardziej zaawansowanych systemów szablonów.

Model

Model to dane i przede wszystkim funkcjonalna podstawa całej aplikacji. Zawiera całą logikę aplikacji (używa się również terminu logika biznesowa). Jest to MMVC lub MVP. Każda akcja użytkownika (logowanie, dodanie towaru do koszyka, zmiana wartości w bazie danych) stanowi akcję modelu.

Model zarządza swoim wewnętrznym stanem i na zewnątrz oferuje ściśle określony interfejs. Wywołując funkcje tego interfejsu, możemy sprawdzać lub zmieniać jego stan. Model nie wie o istnieniu view lub kontrolera.

Model-View-Controller (MVC)

Architektura oprogramowania, która powstała z potrzeby oddzielenia w aplikacjach z interfejsem graficznym kodu obsługi (controller) od kodu logiki aplikacji (model) i od kodu wyświetlającego dane (view). Dzięki temu aplikacja staje się bardziej przejrzysta, ułatwia przyszły rozwój i umożliwia testowanie poszczególnych części osobno.

Model-View-Presenter (MVP)

Architektura oparta na Model-View-Controller.

Moduł

Moduł reprezentuje logiczną część aplikacji. W typowym układzie jest to grupa prezenterów i szablonów, które obsługują określoną dziedzinę funkcjonalności. Moduły umieszczamy w osobnych katalogach, takich jak np. Front/, Admin/ lub Shop/.

Na przykład e-sklep dzielimy na:

  • Frontend (Shop/) do przeglądania produktów i zakupów
  • Sekcję klienta (Customer/) do zarządzania zamówieniami
  • Administrację (Admin/) dla operatora

Technicznie są to zwykłe katalogi, które jednak dzięki przejrzystemu podziałowi pomagają skalować aplikację. Prezenter Admin:Product:List będzie fizycznie umieszczony na przykład w katalogu app/Presentation/Admin/Product/List/ (zobacz mapowanie prezenterów).

Namespace

Przestrzeń nazw, część języka PHP od wersji 5.3 i niektórych innych języków programowania, umożliwiająca używanie klas, które w różnych bibliotekach nazywają się tak samo, bez konfliktu nazw. Zobacz dokumentację PHP.

Presenter

Presenter to obiekt, który przyjmuje żądanie przetłumaczone przez router z żądania HTTP i generuje odpowiedź. Odpowiedzią może być strona HTML, obrazek, dokument XML, plik na dysku, JSON, przekierowanie lub cokolwiek wymyślisz.

Zwykle pod pojęciem presenter rozumie się potomka klasy Nette\Application\UI\Presenter. Zgodnie z przychodzącymi żądaniami uruchamia odpowiednie akcje i renderuje szablony.

Router

Dwukierunkowy tłumacz między żądaniem HTTP / URL a akcją presentera. Dwukierunkowość oznacza, że z żądania HTTP można wywnioskować akcję presentera, ale także odwrotnie, do akcji wygenerować odpowiedni URL. Więcej w rozdziale o routingu URL.

SameSite cookies zapewniają mechanizm rozpoznawania, co doprowadziło do załadowania strony. Może mieć trzy wartości: Lax, Strict i None (ten wymaga HTTPS). Jeśli żądanie strony pochodzi bezpośrednio ze strony internetowej lub użytkownik otwiera stronę, wpisując ją bezpośrednio w pasku adresu lub klikając zakładkę, przeglądarka wysyła do serwera wszystkie pliki cookie (czyli z flagami Lax, Strict i None). Jeśli użytkownik przejdzie na stronę przez link z innej strony, do serwera zostaną przekazane pliki cookie z flagami Lax i None. Jeśli żądanie powstanie w inny sposób, np. przez wysłanie formularza POST z innej strony, załadowanie wewnątrz iframe, za pomocą JavaScriptu itp., wysłane zostaną tylko pliki cookie z flagą None.

Usługa / Serwis

W kontekście Dependency Injection jako usługa określa się obiekt, który jest tworzony i zarządzany przez kontener DI. Usługa może być łatwo zastąpiona inną implementacją, na przykład w celach testowania lub zmiany zachowania aplikacji, bez konieczności modyfikowania kodu, który używa usługi.

Snippet

Wycinek, część strony, którą można osobno przerysować podczas żądania AJAX.

View

View, czyli widok, to warstwa aplikacji odpowiedzialna za wyświetlenie wyniku żądania. Zwykle używa systemu szablonów i wie, jak wyświetlić dany komponent lub wynik uzyskany z modelu.

wersja: 4.0