Как да пишем микро-уебсайтове

Представете си, че трябва бързо да създадете малък уебсайт за предстоящо събитие на вашата фирма. Трябва да е просто, бързо и без излишни усложнения. Може би си мислите, че за такъв малък проект не ви е необходим стабилен framework. Но какво ще стане, ако използването на Nette framework може значително да опрости и ускори този процес?

Все пак, дори при създаването на прости уебсайтове, не искате да се отказвате от удобството. Не искате да измисляте това, което вече е решено. Бъдете спокойно мързеливи и се оставете да ви глезят. Nette Framework може отлично да се използва и като micro framework.

Как може да изглежда такъв микросайт? Например така, че целият код на уебсайта да се постави в един файл index.php в публичната папка:

<?php

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

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

// създаване на DI контейнер въз основа на конфигурацията в config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// настройване на маршрутизацията
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// маршрут за URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// откриване на езика на браузъра и пренасочване към URL /en или /de и т.н.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// маршрут за URL https://example.com/cs или https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// показване на съответния шаблон, например ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// стартиране на приложението!
$container->getByType(Nette\Application\Application::class)->run();

Всичко останало ще бъдат шаблони, съхранени в родителската папка /templates.

PHP кодът в index.php първо подготвя средата, след това дефинира маршрутите и накрая стартира приложението. Предимството е, че вторият параметър на функцията addRoute() може да бъде callable, който се изпълнява след отваряне на съответната страница.

Защо да използвате Nette за микросайт?

  • Програмистите, които някога са опитвали Tracy, днес не могат да си представят да програмират нещо без нея.
  • Преди всичко обаче ще използвате системата за шаблони Latte, защото още от 2 страници ще искате да имате отделен лейаут и съдържание.
  • И определено искате да разчитате на автоматично екраниране, за да не възникне уязвимост XSS
  • Nette също така гарантира, че при грешка никога няма да се покажат програмни съобщения за грешки на PHP, а разбираема за потребителя страница.
  • Ако искате да получавате обратна връзка от потребителите, например под формата на контактна форма, тогава ще добавите и форми и база данни.
  • Попълнените формуляри можете лесно да изпращате по имейл.
  • Понякога може да ви е полезно кеширането, например ако изтегляте и показвате фийдове.

В днешно време, когато скоростта и ефективността са ключови, е важно да имате инструменти, които ви позволяват да постигнете резултати без излишно забавяне. Nette framework ви предлага точно това – бърза разработка, сигурност и широк набор от инструменти, като Tracy и Latte, които опростяват процеса. Достатъчно е да инсталирате няколко Nette пакета и изграждането на такъв микросайт изведнъж става напълно лесно. И знаете, че никъде не се крие никаква дупка в сигурността.