Kendi MVC Framework'ümüzde Dispatcher Geliştirme
Şimdi index.php dosyasının mevcut içeriğini hatırlayalım:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// otomatik yükleme implementasyonunuz
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Gördüğünüz gibi, şu an için yönlendiricimiz
Track sınıfının bir nesnesini döndürüyor,
içinde kontrolör adı, eylem adı ve adres
çubuğundan gelen parametreler bulunuyor.
Ayrıca, önceki derste tüm kontrolörlerin
ebeveynini yaptık.
Şimdi, $track değişkenimizde bulunan
kontrolörün metodunun çağrılmasını sağlayabiliriz.
Bunu özel bir Dispatcher sınıfı yapacak.
Dispatcher, Track sınıfının bir nesnesini
alacak ve onun verilerine göre belirtilen sınıfın
nesnesini oluşturacak, bu sınıfın metodunu
çağıracak, metoda parametreleri iletecek.
Hadi index.php dosyasına dispatcher çağrısını ekleyelim:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// otomatik yükleme implementasyonunuz
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Dispatcher çağrısı:
$page = ( new Dispatcher ) -> getPage($track);
?>
Dispatcher'ımızın getPage metodunun çağrısı,
kontrolörün render metodunu çağıracak ve
bu metodun çağrısının döndürdüğü şeyi geri döndürecek.
Önceki dersten de bildiğiniz gibi, kontrolörün
render metodu Page sınıfının bir nesnesini
döndürür.
İşte Dispatcher sınıfımızın taslağı:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kod
return kontrolör -> render(parametreler);
}
}
?>
Benim taslağımı kullanarak açıklanan
Dispatcher sınıfını implemente edin.
Çalışmasını kontrol edin.
Zorluk yaşarsanız, benim yaptığım eğitim
framework'ünün dosyalarındaki kaynak koda bakın.