Projemizde web tarayıcı satırından girilen değer ne olursa olsun, tüm akışlar ana dizinde bulunan ve içeriği aşağıda gösterilen index.php dosyasına yönlendirilecektir.
C:\wamp\www\bgmvc\index.php
<?php
session_start(); // Oturum başlatma
// Sınıfı kullanımları
use \Core\{Config, Router, H};
use App\Models\Users;
use Dotenv\Dotenv;
// Sabit bildirimleri
define('FROOT', __DIR__); // Fiziksel dosya yol tanımlaması (C:\wamp\www\bgmvc)
define('DS', DIRECTORY_SEPARATOR);
// Composer tarafından yüklenen bileşenleri otomatik olarak yükleme
require_once('./vendor/autoload.php');
// Dotenv bileşeni oluşturma
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->safeLoad();
// Otomatik sınıf dosyası yükleme fonksiyonu
spl_autoload_register(function($className){
$parts = explode('\\', $className);
$class = end($parts);
array_pop($parts);
$path = strtolower(implode(DS, $parts));
$path = FROOT . DS . $path . DS . $class . '.php';
if(file_exists($path)) {
include($path);
}
});
// Kullanıcı bağlı ise kullanıcı bilgilerini içeren bir nesne, değilse false değeri geri döndürür.
$current_user = Users::get_current_user();
// Config.php dosyasındaki Config sınıfı içindeki get() fonksiyonu ile
// ana dizinde bulunan env dosyasındaki root_dir değerini okuma
$root_dir = Config::get('root_dir'); // '/bgmvc/'
// Tanımlanan ROOT sabitine Lokal sunucu ise '/bgmvc/' değerini, uzak sunucu ise '/' değerini atar.
define('ROOT', ($_SERVER['SERVER_NAME']==='localhost') ? $root_dir : '/'); // Lokal='/bgmvc/' Live='/'
// Lokal sunucu ise '/bgmvc/' değerini, uzak sunucu ise '/' değerini URL değerinin başından siler.
// Lokal: '/bgmvc/' -> '', '/bgmvc/home' -> 'home' Live: '/' -> '' '/home' -> 'home'
$url = H::remove_root($_SERVER['REQUEST_URI']);
// var_dump($url); die();
// İlk giriş ise sadece boş bir dizi, değilse denetleyici (controller), hareket (action) ve parametreler içerir.
$current_page = $url; // '', 'home', '/home/details/5', 'activities/software', 'about'
// '/' değeri ile ayrılmış olan denetleyici, hareket ve parametre değerleri bir diziye atanır.
$url = explode ('/', $url);
Router::route($url); // Router'a yönlendirme
// C:\wamp\www\bgmvc\core\H.php
public static function remove_root($url) {
// '/bgmvc/' -> ''
// '/bgmvc/home' -> 'home'
// '/bgmvc/home/details/5' -> '/home/details/5'
if(ROOT != '/') { // En soldaki '/bgmvc/' (Lokal sunucu) veya '/' (Uzak sunucu) değerini kaldırma
$url = str_replace(ROOT, '', $url);
}
else { // '/' değerini kaldırma (Canlı sunucu) $url = '/' -> $url = ''
$url = ltrim($url, '/');
}
// $url değerinin en sağında yer alabilecek id=21&md=34 gibi değerleri silmek için
$url = preg_replace('/(\?.+)/', '', $url);
return $url;
}
index.php dosyasında sırayla aşağıdaki işlemler gerçekleştirilir:
Yerel sunucuda girilen farklı tarayıcı satır değerlerine göre, $url değişkeninin aldığı değerler aşağıda gösterilmektedir:
http://localhost/bgmvc/ (Siteye ilk giriş) string '' (length=0) http://localhost/bgmvc/home (Sadece denetleyici) string 'home' (length=4) http://localhost/bgmvc/home/details/5 (Denetleyici, hareket ve tek bir parametre) string 'home/details/5' (length=14)
Yerel sunucuda girilen farklı tarayıcı satır değerlerine göre, $url değişkeninin aldığı değerler aşağıda gösterilmektedir:
http://localhost/bgmvc/ (Siteye ilk giriş) array (size=1) 0 => string '' (length=0) http://localhost/bgmvc/home (Sadece denetleyici) array (size=1) 0 => string 'home' (length=4) http://localhost/bgmvc/home/details/5 (Denetleyici, hareket ve tek bir parametre) array (size=3) 0 => string 'home' (length=4) 1 => string 'details' (length=7) 2 => string '5' (length=1)