Mikro Siteler Nasıl Yazılır
Şirketinizin yaklaşan etkinliği için hızlıca küçük bir web sitesi oluşturmanız gerektiğini düşünün. Basit, hızlı ve gereksiz karmaşıklıklardan uzak olmalı. Böylesine küçük bir proje için güçlü bir framework'e gerek olmadığını düşünebilirsiniz. Peki ya Nette Framework kullanmak bu süreci gerçekten basitleştirip hızlandırıyorsa?
Basit web siteleri oluştururken bile rahatlıktan ödün vermek istemezsiniz. Zaten çözülmüş olanı yeniden icat etmek istemezsiniz. Rahatça tembel olun ve kendinizi şımartın. Nette Framework, mikro framework olarak kullanmak için de harikadır.
Böyle bir mikro site nasıl görünebilir? Örneğin sitenin tüm kodu, genel dizindeki tek bir index.php
dosyasında bulunabilir:
<?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 container oluştur
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();
// yönlendirmeyi kur
$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 sapta ve /en ya da /de gibi bir URL'ye yönlendir
$supportedLangs = ['en', 'de', 'cs'];
$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
return $presenter->redirectUrl("/$lang");
});
// https://example.com/cs ya da https://example.com/en URL'si için rota
$router->addRoute('<lang cs|en|de>', function ($presenter, string $lang) {
// uygun ş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 /templates dizininde saklanan şablonlar olacak.
index.php içindeki PHP kodu önce ortamı kurar, sonra rotaları tanımlar ve en sonunda
uygulamayı çalıştırır. Üstünlüğü, addRoute() fonksiyonunun ikinci parametresinin, ilgili sayfaya
erişildiğinde çalıştırılan bir callable olabilmesidir.
Mikro Siteler İçin Neden Nette?
- Tracy aracını denemiş programcılar, bugün onsuz kod yazmayı zor hayal eder.
- Her şeyden önce Latte şablon sisteminden yararlanırsınız; çünkü yalnızca iki sayfada bile yerleşimi ve içeriği ayırmak isteyeceksiniz.
- Ve XSS açıklarını önlemek için kesinlikle otomatik kaçışlamaya güvenmek isteyeceksiniz.
- Nette ayrıca, bir hata durumunda ham PHP hata mesajlarının asla gösterilmemesini, bunun yerine kullanıcı dostu bir sayfanın görünmesini sağlar.
- Belki bir iletişim formuyla kullanıcı geri bildirimi toplamak isterseniz, form ve veritabanı desteğini kolayca ekleyebilirsiniz.
- Doldurulan formların e-postayla gönderilmesini de kolayca sağlayabilirsiniz.
- Bazen önbellekleme işe yarayabilir; örneğin akışları indirip gösterirken.
Hızın ve verimliliğin can alıcı olduğu bugünün hızlı dünyasında, gereksiz gecikmeler olmadan sonuca ulaşmanızı sağlayan araçlara sahip olmak hayati önemdedir. Nette Framework tam da bunu sunar: hızlı geliştirme, güvenlik ve süreci akıcılaştıran Tracy ile Latte gibi geniş bir araç yelpazesi. Birkaç Nette paketini kurmanız yeter, böyle bir mikro site oluşturmak inanılmaz kolaylaşır. Üstelik gizli güvenlik açıkları olmadığından emin olabilirsiniz.