Come scrivere micrositi
Immaginate di dover creare rapidamente un piccolo sito web per il prossimo evento della vostra azienda. Deve essere semplice, veloce e senza complicazioni inutili. Potreste pensare che per un progetto così piccolo non abbiate bisogno di un framework robusto. Ma cosa succederebbe se l'uso del framework Nette potesse semplificare e accelerare radicalmente questo processo?
Dopotutto, anche nella creazione di siti web semplici, non volete rinunciare alla comodità. Non volete reinventare ciò che è già stato risolto una volta. Siate pure pigri e lasciatevi coccolare. Nette Framework può essere utilizzato egregiamente anche come micro framework.
Come può apparire un tale microsito? Ad esempio, in modo che l'intero codice del sito web sia collocato in un unico file
index.php
nella cartella pubblica:
<?php
require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
// crea il container DI basato sulla configurazione in config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();
// impostiamo il routing
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);
// route per l'URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
// rileviamo la lingua del browser e reindirizziamo all'URL /en o /de ecc.
$supportedLangs = ['en', 'de', 'cs'];
$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
$presenter->redirectUrl("/$lang");
});
// route per l'URL https://example.com/cs o https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
// visualizziamo il template corrispondente, ad esempio ../templates/en.latte
$template = $presenter->createTemplate()
->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
return $template;
});
// avvia l'applicazione!
$container->getByType(Nette\Application\Application::class)->run();
Tutto il resto saranno template salvati nella cartella padre /templates
.
Il codice PHP in index.php
prima prepara l'ambiente, poi
definisce le route e infine avvia
l'applicazione. Il vantaggio è che il secondo parametro della funzione addRoute()
può essere un callable, che viene
eseguito dopo l'apertura della pagina corrispondente.
Perché usare Nette per un microsito?
- I programmatori che hanno provato Tracy una volta, oggi non riescono a immaginare di programmare qualcosa senza di essa.
- Ma soprattutto utilizzerete il sistema di template Latte, perché già da 2 pagine vorrete avere separati il layout e il contenuto.
- E sicuramente volete fare affidamento sull'escaping automatico, affinché non si crei una vulnerabilità XSS
- Nette garantisce anche che, in caso di errore, non vengano mai visualizzati messaggi di errore PHP per programmatori, ma una pagina comprensibile per l'utente.
- Se volete ottenere feedback dagli utenti, ad esempio sotto forma di modulo di contatto, aggiungerete anche i moduli e il database.
- Potete anche farvi inviare facilmente via email i moduli compilati.
- A volte potrebbe esservi utile il caching, ad esempio se scaricate e visualizzate feed.
Al giorno d'oggi, quando la velocità e l'efficienza sono fondamentali, è importante avere strumenti che vi permettano di ottenere risultati senza inutili ritardi. Nette framework vi offre proprio questo: sviluppo rapido, sicurezza e un'ampia gamma di strumenti, come Tracy e Latte, che semplificano il processo. Basta installare un paio di pacchetti Nette e costruire un tale microsito diventa improvvisamente un gioco da ragazzi. E sapete che non si nasconde nessuna falla di sicurezza da nessuna parte.