अपने MVC फ्रेमवर्क में डिस्पैचर का विकास

फ़ाइल index.php की वर्तमान सामग्री को याद करें:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // आपका ऑटोलोड कार्यान्वयन
  });
  
  $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>

जैसा कि आप देख रहे हैं, अभी तक हमारा राउटर Track क्लास की एक वस्तु लौटाता है, जिसमें कंट्रोलर का नाम, एक्शन का नाम और पते की पंक्ति से पैरामीटर शामिल होते हैं। इसके अलावा, पिछले पाठ में हमने सभी कंट्रोलर्स के लिए एक पैरेंट बनाया था।

अब हम ऐसा कर सकते हैं कि कंट्रोलर की विधि का कॉल हो, जिसका डेटा हमारे वेरिएबल $track में निहित है।

यह काम एक विशेष वर्ग Dispatcher करेगा। डिस्पैचर को Track क्लास की वस्तु मिलेगी और उसके डेटा के आधार पर निर्दिष्ट क्लास की वस्तु बनाएगा, उस क्लास की विधि को कॉल करेगा, उस विधि में पैरामीटर पास करेगा।

आइए index.php फ़ाइल में डिस्पैचर का कॉल जोड़ें:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // आपका ऑटोलोड कार्यान्वयन
  });
  
  $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 क्लास का खाका है:

/core/Dispatcher.php<?php
  namespace Core;
  
  class Dispatcher
  {
    public function getPage(Track $track)
    {
      ...कोड
      return कंट्रोलर -> render(पैरामीटर);
    }
  }
?>
Задание 1

मेरे दिए गए खाके का उपयोग करके वर्णित क्लास Dispatcher को लागू करें। इसके काम की जाँच करें। कठिनाई होने पर मेरे द्वारा बनाए गए शैक्षिक फ्रेमवर्क की फ़ाइलों में स्रोत कोड देखें।