03. Uzlabotais klašu maršrutētājs

Līdzšinējais maršrutētājs spēja tikt galā ar vienkāršu datņu pieprasīšanu, taču nu tam jāspēj atrast vajadzīgā klase un izsaukt pareizā metode tajā!

Jaunie maršruti

Turpmāk datnē routes.php glabāsim nevis maršrutu - datņu nosaukumu pārus, bet gan maršrutu - KontrolieruKlašu@metožu pārus.

  1. routes.php nomaini esošo maršrutu uz:
    
      return [
        '/' => 'BlogController@index'
      ];
                      

Uzlabotais maršrutētājs

  1. router.php datnē zem $routes mainīgā vērtības piešķiršanas (aptuveni 6. rinda) pievieno koda fragmentu, kurš pieprasa ikkatru kontroliera klasi, lai tās visas kļūst pieejamas maršrutētājā:
    
    foreach ($routes as $controller) {
      require_once "controllers/" . explode("@", $controller)[0] . ".php";
    }
                   

    explode("@", "BlogController@index") pieņem, ka vērtības simbolu virknē tiek atdalītas ar noteiku simbolu (šoreiz @) un pārveido simbolu virkni par masīvu. Masīva 0. elements ir BlogController, bet otrais - index

  2. Kodu, kas bija atbildīgs par kontorliera pieprasīšanu (require $routes[$uri];) aizstāj ar kodu, kurš atdala kontroliera klases nosaukumu no metodes, izveido šai klasei jaunu objektu jeb instanci un izsauc norādīto metodi:
    
    [$controller, $method] = explode('@', $routes[$uri]);
    $instance = new $controller();
    $instance->$method();
                   

    Pamani, cik stilīgi var masīva elementus katru ielikt savā mainīgajā - [$controller, $method] = ["BlogController", "index"]

  3. Ja visu izdarīji pareizi, pārlūkprogrammā dodoties uz http://localhost/, atkal tiek attēlots teksts Visi bloga ieraksti