ඔබේ 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 ක්‍රියාත්මක කරන්න. එහි ක්‍රියාකාරිත්වය පරීක්ෂා කරන්න. දුෂ්කරතා ඇති වුවහොත්, මා විසින් සාදන ලද අධ්‍යාපනික රාමුවේ මූලාශ්‍ර කේතය බලන්න.