Glossario dei termini
AJAX
Asynchronous JavaScript and XML – tecnologia per la comunicazione client-server attraverso il protocollo HTTP senza la necessità di ricaricare l'intera pagina durante ogni richiesta. Nonostante l'acronimo, il formato JSON è spesso utilizzato al posto di XML.
Azione del presentatore
Parte logica del presentatore, che esegue un'azione, ad esempio per mostrare una pagina di prodotto, per registrare un utente, ecc. Un presentatore può avere più azioni.
BOM
La cosiddetta byte order mask è il primo carattere speciale di un file e indica l'ordine dei byte nella codifica. Alcuni editor la includono automaticamente, è praticamente invisibile, ma causa problemi con le intestazioni e l'invio di output da PHP. È possibile utilizzare Code Checker per rimuoverla in blocco.
Controllore
Il controllore elabora le richieste dell'utente e, sulla base di queste, richiama una particolare logica applicativa (cioè il modello), quindi richiama la vista per il rendering dei dati. Un analogo dei controllori sono i presenter di Nette Framework.
Cross-Site Scripting (XSS)
Il Cross-Site Scripting è un metodo di interruzione di un sito che utilizza input non inescapsulati. Un aggressore può iniettare il proprio codice HTML o JavaScript e modificare l'aspetto della pagina o addirittura raccogliere informazioni sensibili sugli utenti. La protezione contro gli XSS è semplice: l'escape coerente e corretto di tutte le stringhe e gli input.
Nette Framework è dotato di una nuovissima tecnologia, il Context-Aware Escaping, che vi permetterà di eliminare per sempre i rischi di Cross-Site Scripting. L'escape di tutti gli input avviene automaticamente in base a un determinato contesto, per cui è impossibile che un coder dimentichi accidentalmente qualcosa.
Falsificazione delle richieste cross-site (CSRF)
Un attacco Cross-Site Request Forgery prevede che l'aggressore induca la vittima a visitare una pagina che esegue silenziosamente una richiesta nel browser della vittima al server in cui la vittima è attualmente loggata, e il server crede che la richiesta sia stata fatta dalla vittima a suo piacimento. Il server esegue una determinata azione sotto l'identità della vittima, ma senza che questa se ne accorga. Può trattarsi della modifica o della cancellazione di dati, dell'invio di un messaggio, ecc.
Nette Framework protegge automaticamente i moduli e i segnali nei presenter da questo tipo di attacco. Ciò avviene impedendo che vengano inviati o richiamati da un altro dominio.
Iniezione di dipendenza
La Dependency Injection (DI) è un modello di progettazione che indica come separare la creazione degli oggetti dalle loro dipendenze. In altre parole, una classe non è responsabile della creazione o dell'inizializzazione delle sue dipendenze, ma queste ultime sono fornite da codice esterno (che può includere un contenitore DI). Il vantaggio è che consente una maggiore flessibilità del codice, una migliore leggibilità e una maggiore facilità di test delle applicazioni, perché le dipendenze sono facilmente sostituibili e isolate da altre parti del codice. Per ulteriori informazioni, vedere Cos'è la Dependency Injection?
Contenitore per l'iniezione di dipendenze
Un contenitore di Dependency Injection (anche contenitore DI o contenitore IoC) è uno strumento che gestisce la creazione e la gestione delle dipendenze in un'applicazione (o servizi). Un contenitore di solito ha una configurazione che definisce quali classi dipendono da altre classi, quali implementazioni specifiche di dipendenze utilizzare e come creare tali dipendenze. Il contenitore crea quindi questi oggetti e li fornisce alle classi che ne hanno bisogno. Per ulteriori informazioni, vedere Cos'è un contenitore DI?
Sfuggire
L'escape è la conversione di caratteri con un significato speciale in un determinato contesto in altre sequenze equivalenti.
Esempio: Vogliamo scrivere le virgolette in una stringa con le virgolette. Poiché le virgolette hanno un significato speciale nel
contesto della stringa con le virgolette, è necessario utilizzare un'altra sequenza equivalente. La sequenza concreta è
determinata dalle regole del contesto (ad esempio, \"
nella stringa chiusa da virgolette di PHP,
"
negli attributi HTML, ecc.)
Filtro (in precedenza Helper)
Funzione di filtro. Nei modelli, il filtro è una funzione che aiuta a modificare o formattare i dati nella forma di output. I modelli hanno diversi filtri standard predefiniti.
Invalidazione
Avviso di uno snippet da renderizzare. In altri contesti, anche la cancellazione di una cache.
JSON
Formato di scambio dati basato sulla sintassi di JavaScript (è il suo sottoinsieme). Le specifiche esatte si trovano su www.json.org.
Componente
Parte riutilizzabile di un'applicazione. Può essere una parte visuale di una pagina, come descritto nel capitolo componenti, oppure il termine può anche indicare la classe Componente ( tale componente non deve essere necessariamente visuale).
Caratteri di controllo
I caratteri di controllo sono caratteri invisibili che possono comparire in un testo e causare problemi. Per la loro rimozione dai file si può usare Code Checker, per la loro rimozione da una variabile si può usare la funzione Strings::normalize().
Eventi
Un evento è una situazione attesa nell'oggetto e, quando si verifica, vengono richiamati i cosiddetti gestori, cioè i callback che reagiscono all'evento (sample). L'evento può essere, ad esempio, l'invio di un modulo, il login di un utente, ecc. Gli eventi sono quindi una forma di inversione del controllo.
Ad esempio, il login di un utente avviene nel metodo Nette\Security\User::login()
. L'oggetto User
ha
una variabile pubblica $onLoggedIn
, che è un array a cui chiunque può aggiungere un callback. Non appena l'utente
effettua il login, il metodo login()
richiama tutti i callback presenti nell'array. Il nome di una variabile nella
forma onXyz
è una convenzione utilizzata in tutto Nette.
Latte
Uno dei sistemi di template più innovativi di sempre.
Modello
Il modello rappresenta la base dei dati e delle funzioni dell'intera applicazione. Include l'intera logica dell'applicazione (talvolta indicata anche come “logica aziendale”). È la M di MVC o MPV. Qualsiasi azione dell'utente (login, inserimento di oggetti nel carrello, modifica di un valore del database) rappresenta un'azione del modello.
Il modello gestisce il suo stato interno e fornisce un'interfaccia pubblica. Richiamando questa interfaccia, possiamo prendere o cambiare il suo stato. Il modello non conosce l'esistenza di una vista o di un controllore, è totalmente indipendente da essi.
Modello-Vista-Controllore
Architettura software emersa nello sviluppo di applicazioni GUI per separare il codice per il controllo del flusso (controller) dal codice della logica dell'applicazione (model) e dal codice per il rendering dei dati (view). In questo modo il codice è più comprensibile, facilita lo sviluppo futuro e consente di testare separatamente le parti separate.
Modello-Vista-Presentatore
Architettura basata su Model-View-Controller.
Modulo
Il modulo in Nette Framework rappresenta un insieme di presentatori e modelli, eventualmente anche componenti e modelli, che servono dati a un presentatore. È quindi una parte logica di un'applicazione.
Ad esempio, un e-shop può avere tre moduli:
- Catalogo prodotti con carrello.
- Amministrazione per il cliente.
- Amministrazione per il negoziante.
Spazio dei nomi
Lo spazio dei nomi è una caratteristica del linguaggio PHP dalla versione 5.3 e di altri linguaggi di programmazione. Aiuta a evitare collisioni di nomi (ad esempio, due classi con lo stesso nome) quando si utilizzano insieme librerie diverse. Per ulteriori dettagli, consultare la documentazione di PHP.
Presentatore
Il presentatore è un oggetto che prende la richiesta tradotta dal router dalla richiesta HTTP e genera una risposta. La risposta può essere una pagina HTML, un'immagine, un documento XML, un file, un JSON, un reindirizzamento o qualsiasi altra cosa si pensi.
Per presentatore si intende solitamente un discendente della classe Nette\Application\UI\Presenter. Con le richieste esegue le azioni appropriate e rende i modelli.
Router
Traduttore bidirezionale tra richiesta HTTP / URL e azione del presentatore. Bi-direzionale significa che non solo è possibile derivare un'azione del presentatore dalla richiesta HTTP, ma anche generare l'URL appropriato per un'azione. Per saperne di più, consultare il capitolo sull'instradamento degli URL.
Cookie SameSite
I cookie SameSite forniscono un meccanismo per riconoscere la causa del caricamento della pagina. Può avere tre valori:
Lax
, Strict
e None
(quest'ultimo richiede HTTPS). Se la richiesta della pagina proviene
direttamente dal sito o l'utente apre la pagina digitando direttamente nella barra degli indirizzi o cliccando su un segnalibro,
il browser invia tutti i cookie al server (cioè con i flag Lax
, Strict
e None
). Se
l'utente clicca sul sito tramite un link proveniente da un altro sito, i cookie con i flag Lax
e None
vengono passati al server. Se la richiesta viene effettuata con altri mezzi, come l'invio di un modulo POST da un altro sito, il
caricamento all'interno di un iframe, l'utilizzo di JavaScript, ecc. vengono inviati solo i cookie con il flag
None
.
Servizio
Nel contesto della Dependency Injection, un servizio si riferisce a un oggetto creato e gestito da un contenitore DI. Un servizio può essere facilmente sostituito da un'altra implementazione, ad esempio a scopo di test o per modificare il comportamento di un'applicazione, senza dover modificare il codice che utilizza il servizio.
Frammento
Snippet di una pagina, che può essere restituito separatamente durante una richiesta AJAX.
Vista
La vista è un livello dell'applicazione che è responsabile della resa dei risultati della richiesta. Di solito utilizza un sistema di template e sa come rendere i suoi componenti o i risultati presi dal modello.