tembel-router
Bu benim ilk router denemem. Artık .htaccess dosyasına değer girerek yönlendirme yapmaktan bıkmıştım.
Bir kaç araştırma yaptıktan sonra şu projeden (https://github.com/steampixel/simplePHPRouter) özelleştirerek kendime bir Router yazmayı başardım.
Neredeyse aynen sitede kullandığım şekliyle sizinle paylaşıyorum.
Sorunuz olursa sormaktan çekinmeyin.
İlk sürüm bundan daha basitti, lakin parse edilen değerler için bir eşleştirme yapmıyordu. Yeni sürüm biraz daha tutarlı bir router oldu.
Nasıl kullanılır:
<?php
//vendorları ve kendi classlarımızı çağırıyoruz
require_once 'Route.php';
use Yakusha\Kitaphaber\Route;
//bu küçük denetim sayesinde direk ana sayfa talep edildiyse router içine hiç almıyoruz
if(!isset($_SERVER['REQUEST_URI']) OR $_SERVER['REQUEST_URI'] == '/')
{
$_sayfaadi = 'index';
}
else
{
//Önce en çok kullanılan sayfaları tanımlıyoruz
//Bizim sitemiz için bunlar içerik sayfaları oluyor
Route::add('content_detail', array('/(.*)-k([0-9]*).html$/',
'/(.*)-k([0-9]*).htm(.*)/'), 2, 'numeric');
Route::add('book_detail', array('/(.*)-bd([0-9]*).html$/',
'/(.*)-bd([0-9]*).htm(.*)/'), 2, 'numeric');
Route::add('book_list', array('/(.*)-bl([0-9]*)$/',
'/(.*)-bl([0-9]*)(.*)/'), 2, 'numeric');
Route::add('yazar_detay', array('/(.*)-a([0-9]*)$/',
'/(.*)-a([0-9]*)(.*)/'), 2, 'numeric');
//değer gönderilmiş haliyle kimi sayfalar
Route::add('etiket_liste', array('/etiket\/(.*)$/'), 1, 'string');
Route::add('etiketler', array('/etiketler\/(.*)$/', '/etiketler$/'), 1, 'string');
Route::add('arsiv', array('/arsiv\/(.*)$/'), 1, 'string');
Route::add('arama', array('/arama\/(.*)$/'), 1, 'string');
Route::add('arama', array('/arama$/'), 0, 'null');
//değer gönderilmemiş haliyle çıplak sayfalar
Route::add('etiketler', array('/etiketler$/'), 0, 'null');
Route::add('arsiv', array('/arsiv$/'), 0, 'null');
Route::add('yazarlar', array('/yazarlar$/'), 0, 'null');
Route::add('books', array('/books$/'), 0, 'null');
Route::add('mansetler', array('/mansetler$/'), 0, 'null');
Route::add('ajax', array('/ajax.php$/'), 0, 'null');
//Bu sayfalar alışkanlık olarak var, kimi sayfalar değer de alıyor, oluşturuyoruz
//değer alsalar bile değerlerini parse etmiyoruz
Route::add('index', array('/index.php$/', '/index.php\?(.*)/'), 0, 'null');
Route::add('giris', array('/giris.php$/', '/giris.php\?(.*)/'), 0, 'null');
Route::add('crop', array('/crop.php$/', '/crop.php\?(.*)$/'), 0, 'null');
Route::add('404', array('/404.php$/', '/404.php\?(.*)/'), 0, 'null');
Route::add('acp', array('/acp.php$/', '/acp.php\?(.*)/'), 0, 'null');
//feed için bir kaç default yol belirtiyoruz
//bu sayfa da hiçbir değer almıyor
Route::add('feed', array('/feed.xml$/', '/feed.php$/', '/rss.xml$/',
'/feed$/', '/atom$/', '/rss$/'), 0, 'null');
//id cast ettiklerimiz bir arada dursun
Route::add('sitemap', array('/sitemap.xml$/'), 0, 'null',
array('image' => 1, 'change' => 0));
Route::add('sitemap', array('/sitemap_change.xml$/'), 0, 'null',
array('image' => 1, 'change' => 1));
Route::add('sitemap', array('/sitemap_yandex.xml$/'), 0, 'null',
array('image' => 0, 'change' => 1));
Route::add('sitemap', array('/sitemap_yandex_change.xml$/'), 0, 'null',
array('image' => 0, 'change' => 1));
//sabit sayfa tanımlarımız
Route::add('page', array('/hakkimizda$/'), 0, 'null', array('id_cast' => 151));
Route::add('page', array('/kunye$/'), 0, 'null', array('id_cast' => 152));
Route::add('page', array('/iletisim$/'), 0, 'null', array('id_cast' => 153));
Route::add('page', array('/yazi-gondermek-icin$/'), 0, 'null', array('id_cast' => 154));
//sabit kategori yollarını tanımlıyoruz
Route::add('kategori', array('/dusunce$/'), 0, 'null', array('id_cast' => 100));
Route::add('kategori', array('/edebiyat$/'), 0, 'null', array('id_cast' => 101));
Route::add('kategori', array('/bilim$/'), 0, 'null', array('id_cast' => 102));
Route::add('kategori', array('/ilahiyat$/'), 0, 'null', array('id_cast' => 103));
Route::add('kategori', array('/soylesi$/'), 0, 'null', array('id_cast' => 104));
Route::add('kategori', array('/yeni-cikanlar$/'), 0, 'null', array('id_cast' => 105));
Route::add('kategori', array('/dergi$/'), 0, 'null', array('id_cast' => 106));
Route::add('kategori', array('/sinema$/'), 0, 'null', array('id_cast' => 107));
Route::add('kategori', array('/kara-tahta$/'), 0, 'null', array('id_cast' => 108));
Route::add('kategori', array('/haber$/'), 0, 'null', array('id_cast' => 109));
Route::add('kategori', array('/tarih$/'), 0, 'null', array('id_cast' => 110));
Route::add('kategori', array('/cocuk-kitapligi$/'), 0, 'null', array('id_cast' => 111));
$result = Route::run();
//default değerler atıyoruz
//$_sayfaadi için 404 atayarak tüm bulunamayan
//url değerlerini oraya yönlendiriyoruz
$_sayfaadi = '404';
$_match = 0;
//elimizdeki sonuçta bir sayfa varsa değerleri parse etmeye başlıyoruz
if(isset($result['page']))
{
$_sayfaadi = $result['page'];
$_match = $result['match'];
//bu kısımda param ile gelen parametreleri değişkene dönüştürüyoruz
//kategori ve sayfalar gibi statik url değerlerini dinamik url yaparken kullanıyoruz
extract($result['param']);
}
}
//siteyi artık çağırabiliriz
include $_sayfaadi.'.php';