Pembangun Pengirim dalam Kerangka MVC Sendiri
Mari kita ingat semula kandungan fail index.php semasa:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// pelaksanaan autoload anda
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Seperti yang anda lihat, setakat ini penghala kami mengembalikan
objek kelas Track, yang mengandungi nama
pengawal, nama tindakan dan parameter dari
baris alamat. Selain itu, dalam
pelajaran sebelumnya kami telah membuat induk untuk semua
pengawal.
Sekarang kita boleh membuat supaya
panggilan kaedah pengawal, yang datanya
terkandung dalam pembolehubah $track kami, berlaku.
Ini akan dilakukan oleh kelas khas Dispatcher.
Pengirim akan menerima objek kelas Track
dan berdasarkan datanya mencipta objek kelas yang ditentukan,
memanggil kaedah kelas tersebut, sambil
menghantar parameter kepada kaedah itu.
Mari tambah panggilan pengirim dalam fail index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// pelaksanaan autoload anda
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Panggilan pengirim:
$page = ( new Dispatcher ) -> getPage($track);
?>
Panggilan kaedah getPage pengirim kami
akan memanggil kaedah render pengawal
dan mengembalikan apa yang dikembalikan oleh panggilan kaedah itu.
Seperti yang anda sudah tahu dari pelajaran sebelumnya, kaedah
render pengawal mengembalikan objek
kelas Page.
Berikut adalah rangka kelas Dispatcher kami:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kod
return pengawal -> render(parameter);
}
}
?>
Dengan menggunakan rangka saya, laksanakan
kelas Dispatcher yang diterangkan. Semak kerjanya.
Jika menghadapi kesulitan, lihat kod sumber
dalam fail kerangka pengajaran yang saya buat.