Jak pisać mikrostrony

Wyobraź sobie, że potrzebujesz szybko stworzyć małą stronę na zbliżające się wydarzenie w Twojej firmie. Ma być prosta, szybka i bez zbędnych komplikacji. Możesz pomyśleć, że do tak małego projektu nie jest potrzebny rozbudowany framework. A co, jeśli użycie Nette Framework mogłoby ten proces uprościć i przyspieszyć?

Nawet przy tworzeniu prostych stron nie chcesz rezygnować z wygody. Nie chcesz wymyślać na nowo tego, co już zostało rozwiązane. Śmiało bądź leniwy i pozwól się rozpieszczać. Nette Framework świetnie nadaje się także do użycia jako mikroframework.

Jak może wyglądać taka mikrostrona? Na przykład cały kod strony może znajdować się w jednym pliku index.php w katalogu publicznym:

<?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// tworzymy kontener DI na podstawie konfiguracji w config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// ustawiamy routing
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// trasa dla URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// wykrywamy język przeglądarki i przekierowujemy na URL /en lub /de itd.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	return $presenter->redirectUrl("/$lang");
});

// trasa dla URL https://example.com/cs lub https://example.com/en
$router->addRoute('<lang cs|en|de>', function ($presenter, string $lang) {
	// wyświetlamy odpowiedni szablon, na przykład ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// uruchamiamy aplikację!
$container->getByType(Nette\Application\Application::class)->run();

Wszystko pozostałe to będą szablony zapisane w nadrzędnym katalogu /templates.

Kod PHP w index.php najpierw przygotowuje środowisko, potem definiuje trasy i na koniec uruchamia aplikację. Zaletą jest to, że drugim parametrem funkcji addRoute() może być callable, który wykona się po otwarciu odpowiedniej strony.

Dlaczego używać Nette do mikrostron?

  • Programiści, którzy kiedyś spróbowali Tracy, nie wyobrażają sobie już dziś programowania bez niej.
  • Przede wszystkim skorzystasz z systemu szablonów Latte, bo już przy dwóch stronach zechcesz oddzielić layout od treści.
  • I na pewno chcesz polegać na automatycznym escapowaniu, żeby nie powstała podatność XSS.
  • Nette zadba też o to, żeby w razie błędu nigdy nie wyświetliły się surowe komunikaty PHP, tylko przyjazna dla użytkownika strona.
  • Jeśli chcesz zbierać opinie użytkowników, na przykład przez formularz kontaktowy, łatwo dodasz wsparcie dla formularzybazy danych.
  • Wypełnione formularze możesz też bez trudu wysyłać e-mailem.
  • Czasem może się przydać cache, na przykład przy pobieraniu i wyświetlaniu kanałów.

W dzisiejszym szybkim świecie, gdzie kluczowe są szybkość i efektywność, niezbędne jest posiadanie narzędzi, które pozwalają osiągać rezultaty bez zbędnych opóźnień. Nette Framework oferuje dokładnie to: szybki rozwój, bezpieczeństwo i szeroką gamę narzędzi takich jak Tracy i Latte, które usprawniają pracę. Wystarczy zainstalować kilka pakietów Nette i zbudowanie takiej mikrostrony staje się niesamowicie proste. A możesz mieć pewność, że nie kryją się w niej żadne luki bezpieczeństwa.