⊗ppMVDFmDs 29 of 35 menu

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.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet