การพัฒนาตัวจัดการใน MVC framework ของเราเอง
จำเนื้อหาปัจจุบันของไฟล์ index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// การใช้งาน autoload ของคุณ
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
อย่างที่คุณเห็น ตอนนี้เราเตอร์ของเราคืนค่า
อ็อบเจ็กต์คลาส Track ซึ่งประกอบด้วยชื่อ
คอนโทรลเลอร์, ชื่อแอ็กชัน และพารามิเตอร์จาก
แอดเดรสบาร์ นอกจากนี้ ในบทเรียน
ที่แล้วเราได้สร้างคลาสหลักสำหรับ
คอนโทรลเลอร์ทั้งหมด
ตอนนี้เราสามารถทำให้เกิด
การเรียกใช้เมธอดของคอนโทรลเลอร์ได้ ซึ่งข้อมูล
ที่อยู่ภายในตัวแปร $track ของเรา
สิ่งนี้จะถูกดูแลโดยคลาสพิเศษ Dispatcher
ตัวจัดการจะได้รับอ็อบเจ็กต์คลาส Track
และจากข้อมูลนั้นจะสร้างอ็อบเจ็กต์ของคลาสที่ระบุ
เรียกเมธอดของคลาสนั้น โดยส่ง
พารามิเตอร์เข้าไปในเมธอดนั้น
มาเพิ่มการเรียกใช้ตัวจัดการในไฟล์ index.php กัน:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// การใช้งาน autoload ของคุณ
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// การเรียกใช้ตัวจัดการ:
$page = ( new Dispatcher ) -> getPage($track);
?>
การเรียกเมธอด getPage ของตัวจัดการของเรา
จะเรียกเมธอด render ของคอนโทรลเลอร์
และส่งคืนค่าที่ได้จากการเรียกเมธอดนั้น
ดังที่คุณทราบจากบทเรียนที่แล้ว เมธอด
render ของคอนโทรลเลอร์จะส่งคืนอ็อบเจ็กต์
คลาส Page
นี่คือโครงร่างของคลาส Dispatcher ของเรา:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...โค้ด
return คอนโทรลเลอร์ -> render(พารามิเตอร์);
}
}
?>
ใช้โครงร่างของฉัน จัดทำคลาส
Dispatcher ตามที่อธิบายไว้ ทดสอบการทำงานของมัน
หากมีปัญหา ลองดูซอร์สโค้ด
ในไฟล์ของ framework การเรียนการสอนที่ฉันทำเสร็จแล้ว