Mikro web siteleri nasıl yazılır

Şirketinizin yaklaşan bir etkinliği için hızlı bir şekilde küçük bir web sitesi oluşturmanız gerektiğini hayal edin. Basit, hızlı ve gereksiz karmaşıklıklar olmadan olmalı. Böyle küçük bir proje için sağlam bir framework'e ihtiyacınız olmadığını düşünebilirsiniz. Peki ya Nette framework kullanmak bu süreci temelden basitleştirip hızlandırabilirse?

Sonuçta, basit web siteleri oluştururken bile rahatlıktan vazgeçmek istemezsiniz. Bir kez çözülmüş olanı yeniden icat etmek istemezsiniz. Tembel olmaktan çekinmeyin ve şımartılmaya izin verin. Nette Framework, bir mikro framework olarak da mükemmel bir şekilde kullanılabilir.

Böyle bir mikro site nasıl görünebilir? Örneğin, web sitesinin tüm kodunu genel klasördeki tek bir index.php dosyasına yerleştirerek:

<?php

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

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

// config.neon içindeki yapılandırmaya göre DI konteynerini oluştur
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// yönlendirmeyi ayarla
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// https://example.com/ URL'si için rota
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// tarayıcı dilini algıla ve /en veya /de vb. URL'ye yönlendir
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// https://example.com/cs veya https://example.com/en URL'si için rota
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// ilgili şablonu göster, örneğin ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// uygulamayı çalıştır!
$container->getByType(Nette\Application\Application::class)->run();

Geri kalan her şey, üst klasör /templates içinde saklanan şablonlar olacaktır.

index.php içindeki PHP kodu önce ortamı hazırlar, ardından rotaları tanımlar ve son olarak uygulamayı çalıştırır. Avantajı, addRoute() fonksiyonunun ikinci parametresinin, ilgili sayfa açıldığında yürütülecek bir callable olabilmesidir.

Neden mikro siteler için Nette kullanmalı?

  • Tracy'yi bir kez deneyen programcılar, bugün onsuz bir şey programlamayı hayal edemezler.
  • Ama her şeyden önce, şablonlama sistemi Latte'yi kullanacaksınız, çünkü 2 sayfadan itibaren düzeni ve içeriği ayırmak isteyeceksiniz.
  • Ve kesinlikle XSS güvenlik açığı oluşmaması için otomatik kaçışa güvenmek istersiniz.
  • Nette ayrıca bir hata durumunda programcı hata mesajlarının PHP'de asla gösterilmemesini, bunun yerine kullanıcı dostu bir sayfanın gösterilmesini sağlar.
  • Kullanıcılardan geri bildirim almak istiyorsanız, örneğin bir iletişim formu şeklinde, o zaman formları ve veritabanını da eklersiniz.
  • Doldurulmuş formları kolayca e-posta ile gönderebilirsiniz.
  • Bazen önbelleğe alma işinize yarayabilir, örneğin beslemeleri indirip görüntülüyorsanız.

Hız ve verimliliğin anahtar olduğu günümüzde, gereksiz gecikmeler olmadan sonuçlara ulaşmanızı sağlayan araçlara sahip olmak önemlidir. Nette framework size tam da bunu sunar – hızlı geliştirme, güvenlik ve süreci basitleştiren Tracy ve Latte gibi geniş bir araç yelpazesi. Sadece birkaç Nette paketi yükleyin ve böyle bir mikro site oluşturmak birdenbire çocuk oyuncağı haline gelir. Ve hiçbir yerde gizli bir güvenlik açığı olmadığını bilirsiniz.