Słowniczek pojęć
AJAX
Asynchroniczny JavaScript i XML – technologia wymiany informacji między klientem a serwerem za pośrednictwem protokołu HTTP bez konieczności przeładowywania całej strony przy każdym żądaniu. Choć nazwa może sugerować, że wysyła on tylko dane w formacie XML, powszechnie stosowany jest również format JSON.
Akcja prezentera
Logiczna część prezentera, wykonująca jedną akcję, np. pokazanie strony produktu, wypisanie użytkownika itp. Jeden prezenter może mieć więcej akcji.
BOM
Tak zwany znak kolejności bajtów to specjalny pierwszy znak w pliku, który jest używany jako wskaźnik kolejności bajtów w kodowaniu. Niektórzy redaktorzy wstawiają je do plików. Jest praktycznie niewidoczny, ale powoduje problemy z wysyłaniem danych wyjściowych i nagłówków z PHP. Możesz użyć Code Checker, aby usunąć go masowo.
Kontroler
Kontroler, który przetwarza żądania użytkownika, a następnie wywołuje odpowiednią logikę aplikacji (tj. Model) na podstawie żądań, a następnie prosi widok o renderowanie danych. Prezentery są podobne do kontrolerów w Nette Framework.
Cross-Site Scripting (XSS)
Cross-Site Scripting to metoda włamania na stronę internetową poprzez wykorzystanie nieobsługiwanych danych wyjściowych. Napastnik może wtedy wcisnąć na stronę swój własny kod, co pozwoli mu na modyfikację strony lub nawet uzyskanie poufnych danych odwiedzających. Przed XSS można się bronić tylko poprzez konsekwentne i poprawne traktowanie wszystkich ciągów znaków.
Nette Framework wyposażony jest w rewolucyjną technologię Context-Aware Escaping, która na zawsze eliminuje ryzyko związane z Cross-Site Scripting. Traktuje wszystkie wyjścia 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 w subtelny sposób wykonuje w przeglądarce ofiary żądanie do serwera, na którym ofiara jest zalogowana, a serwer zakłada, że żądanie zostało wykonane przez ofiarę z własnej woli. Wykonuje więc akcję pod tożsamością ofiary bez jej wiedzy. Może to być zmiana lub usunięcie danych, wysłanie wiadomości itp.
Nette Framework automatycznie chroni formularze i sygnały w presenterech przed tego typu atakami. Robi to, uniemożliwiając ich wysyłanie lub wywoływanie z innej domeny.
Wstrzykiwanie zależności (Dependency Injection)
Dependency Injection (DI) jest wzorcem projektowym, który mówi, jak oddzielić tworzenie obiektów od ich zależności. Oznacza to, że klasa nie jest odpowiedzialna za tworzenie lub inicjalizację swoich zależności, ale zamiast tego te zależności są dostarczane przez zewnętrzny kod (który może zawierać 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 innych części kodu. Aby uzyskać więcej informacji, zobacz Co to jest Dependency Injection?
Kontener Dependency Injection
Kontener Dependency Injection (także kontener DI lub kontener IoC) jest narzędziem, które obsługuje tworzenie i zarządzanie zależnościami w aplikacji (lub usługach). Kontener zazwyczaj posiada konfigurację, która określa, jakie klasy są zależne od innych klas, jakich konkretnych implementacji zależności używać oraz jak tworzyć te zależności. Następnie kontener tworzy te obiekty i dostarcza je do klas, które ich potrzebują. Aby uzyskać więcej informacji, zobacz Czym jest kontener DI?
Ucieczka z
Escaping to zamiana znaków, które mają specjalne znaczenie w danym kontekście na inne pasujące sekwencje. Przykład: chcemy umieścić cudzysłów w ciągu ograniczonym cudzysłowem. Ponieważ znaki cudzysłowu mają specjalne znaczenie w kontekście łańcucha i po prostu napisanie ich byłoby postrzegane jako zakończenie łańcucha, muszą być napisane w innej pasującej sekwencji. Dokładnie, który z nich jest określony przez reguły kontekstowe.
Filtr (dawniej helper)
W szablonach termin filtr zwykle odnosi się do funkcji, która pomaga edytować lub przeformatować dane do ostatecznej postaci. Szablony posiadają kilka standardowych filtrów.
Inwalidyzacja
Powiadom o tym, że wycinek ma zostać przerysowany. W innym sensie również usuwanie zawartości pamięci podręcznej.
JSON
Format wymiany danych oparty na (podzbiorze) składni JavaScript. Dokładna specyfikacja znajduje się na stronie www.json.org.
Składnik
Składnik aplikacji wielokrotnego użytku. Może to być wizualna część strony, jak opisano w rozdziale Pisanie komponentów, lub komponent może być również klasą Component (taki komponent nie musi być wizualny).
Znaki kontrolne
Znaki sterujące to niewidoczne znaki, które mogą pojawić się w tekście i ewentualnie powodować problemy. Możesz użyć Code Checker do masowego usuwania ich z plików oraz Strings::normalize() do usuwania ich ze zmiennej.
Wydarzenia
Zdarzenie to oczekiwana sytuacja w obiekcie, która po zaistnieniu wywołuje tzw. handlery, czyli callbacki reagujące na zdarzenie (próbkę). Zdarzeniem może być np. przesłanie formularza, zalogowanie się użytkownika itp. Zdarzenia są więc formą Inversion of Control.
Przykładowo, logowanie użytkownika następuje 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 o postaci
onXyz
jest konwencją stosowaną w całym Nette.
Latte
Jeden z najbardziej zaawansowanych systemów templatkowania.
Model
Model to dane, a zwłaszcza podstawa funkcjonalna całej aplikacji. Zawiera ona całą logikę aplikacji (używa się również terminu logika biznesowa). Jest to M z MVC lub MVP. Każda akcja użytkownika (zalogowanie się, dodanie przedmiotu do koszyka, zmiana wartości w bazie danych) jest akcją modelu.
Model zarządza swoim wewnętrznym stanem i oferuje stały interfejs na zewnątrz. Wywołując funkcje tego interfejsu możemy dowiedzieć się lub zmienić jego stan. Model nie wie o istnieniu widoku ani kontrolera.
Model-View-Controller
Architektura oprogramowania, która powstała z potrzeby oddzielenia kodu operatora (kontrolera) od kodu logiki aplikacji (modelu) oraz od kodu wyświetlającego dane (widoku) w aplikacjach GUI. Dzięki temu aplikacja jest bardziej przejrzysta, ułatwia przyszły rozwój i umożliwia testowanie każdej części osobno.
Model-Widok-Prezenter
Architektura oparta na Model-View-Controller.
Moduł
Ten moduł to pakiet Nette Framework zawierający prezentery i szablony, czyli komponenty i modele dostarczające dane do prezentera. Jest to więc pewna logiczna część aplikacji.
Przykładowo, sklep internetowy może posiadać trzy moduły:
- katalog produktów z koszykiem
- administracja dla klienta
- administracja dla operatora
Przestrzeń nazw
Przestrzeń nazw, część języka PHP od wersji 5.3 i niektórych innych języków programowania, która pozwala na używanie klas o tej samej nazwie w różnych bibliotekach bez kolizji nazw. Zobacz dokumentację PHP.
Prezenter
Prezenter to obiekt, który przyjmuje żądanie przetłumaczone przez router z żądania HTTP i generuje odpowiedź. Odpowiedzią może być strona HTML, obraz, dokument XML, plik na dysku, JSON, przekierowanie lub cokolwiek, co można wymyślić.
Zazwyczaj termin prezenter odnosi się do potomka klasy Nette\Application\UI\Presenter. Wywołuje on odpowiednie akcje i renderuje szablony na podstawie przychodzących żądań.
Router
Dwukierunkowy resolver pomiędzy żądaniem HTTP/URL a akcją prezentera. Dwukierunkowość oznacza, że można wyprowadzić akcję prezentera z żądania HTTP, ale także odwrócić akcję, aby wygenerować odpowiedni adres URL. Więcej informacji na ten temat znajduje się w rozdziale dotyczącym routingu URL.
SameSite Cookie
Ciasteczka SameSite zapewniają mechanizm rozpoznawania, co doprowadziło do załadowania strony. Może mieć trzy wartości:
Lax
, Strict
oraz None
(ta ostatnia wymaga protokołu HTTPS). Jeśli żądanie do strony
pochodzi bezpośrednio z serwisu lub użytkownik otwiera stronę wpisując ją bezpośrednio w pasku adresu lub klikając
zakładkę, przeglądarka wysyła wszystkie ciasteczka do serwera (czyli z flagami Lax
, Strict
i
None
). Jeśli użytkownik kliknie na stronę poprzez link z innej strony, do serwera przekazywane są pliki cookie
z flagami Lax
i None
. Jeśli żądanie odbywa się w inny sposób, np. poprzez przesłanie formularza
POST z innej witryny, załadowanie wewnątrz ramki iframe, użycie JavaScript itp. wysyłane są tylko pliki cookie z flagą
None
.
Serwis
W kontekście Dependency Injection, usługa odnosi się do obiektu, który jest tworzony i zarządzany przez kontener DI. Usługę można łatwo zastąpić inną implementacją, na przykład w celach testowych lub w celu zmiany zachowania aplikacji, bez konieczności modyfikowania kodu, który korzysta z usługi.
Snippet
Snippet, czyli fragment strony, który może być przerysowany niezależnie podczas żądania AJAX.
Zobacz
Widok to warstwa aplikacji, która odpowiada za wyświetlenie wyniku żądania. Zwykle korzysta z systemu szablonów i wie, jak wyświetlić, który komponent lub wynik uzyskany z modelu.