The router class is responsible for loading up the correct controller. It does nothing else. The value of the controller comes from the URL.

The url will look like this:

http://www.example.com/index.php?rt=news

or if you have htaccess amd mod_rewrite working like this:

http://www.example.com/news
 

As you can see, the route is the rt variable with the value of news. To begin the router class a few things need to be set.

Add this code to the router.class.php file in the application directory

<?php
class router {
private $registry;
private $path;
private $args = array();
public $file;
public $controller;
public $action;
function __construct($registry) {
   $this>registry = $registry;
}

So it does not look like much yet but it is enough to get us started. We can load the router into the registry also.

Add this code to the index.php file

$registry->router = new router($registry);

Now that the router class can be loaded, we can continue with the router class by adding a method to set the controller

directory path.

Add this block of code to the router.class.php file

<?php
function setPath($path) {
  if (is_dir($path) == false)
{
     throw new Exception ('Invalid controller path: `' . $path . '`');
}
  This->path = $path;
}

And to set the controller path in the registry is a simple matter of adding this line to the index.php file

$router->setPath (__SITE_PATH . 'controller');

With the controller path set we can load the controller. We will create a method to called loader() to get the controller and load it. This method will call a getController() method that will decide which controller to load. If a controller is not found then it will default back to the index.

The loader method looks like this.

<?php
public function loader()
{
  $this->getController();
{
if (is_readable($this->file) == false)
{
  echo $this->file;
  die ('404 Not Found');
}
include $file->file;
$class = $this->controller . 'Controller_';
$controller = new $class($this->registry);
if (is_callable(array($controller, $this->action)) == false)
{
$action = 'index';
}
  else
{
$action = $this->action;
}
$controller->$action();
}

The getController method that the loader() method calls does the work. By taking the route variables from the url via $_GET['rt'] it is able to check if a contoller was loaded, and if not default to index. It also checks if an action was loaded. An action is a method within the specified controller. If no action has been declared, it defaults to index. Add the getController method to the router.class.php file.

<?php
private function getController() {
$route = (empty($_GET['rt'])) ? " : $_GET['rt'];
if (empty($route))
{
$route = 'index';
}
else
{
$parts = explode('/', $route);
$this->controller = $parts[0];
if(isset( $parts[1]))
{
$this->action = $parts[1];
}
}
if (emptry($this->controller
{
$this->controller = 'index';
}
if (emptry($this->action))
{
$this->action = 'index';
}
$this->file = $this->path .'/'. $this->controller . '.php';
}
?>

 

Recent Topics
Subject
Post Reply
Open
Recent
Report A Problem Using The Square Root Calculation Program
By Thanapoom1514 Wed 29 Nov 2023 10:46 am Board English Language
0
1445
Wed 29 Nov 2023 10:46 am By Thanapoom1514 View Topic Report A Problem Using The Square Root Calculation Program
Cyberpanel PHP8.2
By Anonymous Tue 28 Nov 2023 9:44 am Board English Language
1
661
Tue 28 Nov 2023 10:05 am By mindphp View Topic Cyberpanel PHP8.2
Guide to Domain Hosting: Types, Purchasing, and Current Services
By Watkinsayden81 Wed 08 Nov 2023 3:32 pm Board English Language
0
535
Wed 08 Nov 2023 3:32 pm By Watkinsayden81 View Topic Guide to Domain Hosting: Types, Purchasing, and Current Services
Report A Problem Using Program Calculates Tax Withholding
By Thanapoom1514 Thu 26 Oct 2023 11:19 am Board English Language
0
983
Thu 26 Oct 2023 11:19 am By Thanapoom1514 View Topic Report A Problem Using Program Calculates Tax Withholding
Expert Programming Assignment Help: Your Solution to Coding Challenges
By alfredaharnish Thu 19 Oct 2023 1:33 pm Board English Language
1
547
Sat 04 Nov 2023 7:57 pm By Anonymous View Topic Expert Programming Assignment Help: Your Solution to Coding Challenges
Report A Problem Using The Map Location Search Program
By Thanapoom1514 Thu 14 Sep 2023 4:47 pm Board English Language
1
1445
Tue 19 Sep 2023 4:17 pm By veras View Topic Report A Problem Using The Map Location Search Program
setup microsoft 365
By matthewtaylor39 Tue 05 Sep 2023 3:59 pm Board English Language
1
591
Mon 23 Oct 2023 7:14 pm By veras View Topic setup microsoft 365
Report a problem using Program Exchange Rate
By Thanapoom1514 Wed 21 Jun 2023 4:54 pm Board English Language
0
1958
Wed 21 Jun 2023 4:54 pm By Thanapoom1514 View Topic Report a problem using Program Exchange Rate
Where can I download most recent version of MDUpgrade?
By filipetorres Wed 24 May 2023 9:30 pm Board English Language
3
903
Thu 25 May 2023 4:41 pm By mindphp View Topic Where can I download most recent version of MDUpgrade?
How to plan your E-commerce website
By rachaelwools Mon 08 May 2023 5:48 pm Board English Language
1
742
Mon 15 May 2023 4:42 pm By Reginaler View Topic How to plan your E-commerce website
Report a problem, delete usage data in the domain checker program.
By Thanapoom1514 Mon 17 Apr 2023 4:58 pm Board English Language
0
731
Mon 17 Apr 2023 4:58 pm By Thanapoom1514 View Topic Report a problem, delete usage data in the domain checker program.
Report a problem using the QR code generator
By Thanapoom1514 Mon 03 Apr 2023 11:50 am Board English Language
0
826
Mon 03 Apr 2023 11:50 am By Thanapoom1514 View Topic Report a problem using the QR code generator
Report a problem using the domain checker program
By Thanapoom1514 Thu 30 Mar 2023 12:23 pm Board English Language
0
1760
Thu 30 Mar 2023 12:23 pm By Thanapoom1514 View Topic Report a problem using the domain checker program
Choosing The Perfect Venue for Your Special Day in Phuket
By Justastoryteller Wed 29 Mar 2023 9:35 am Board English Language
1
851
Tue 25 Apr 2023 5:40 pm By davidmikejohn View Topic Choosing The Perfect Venue for Your Special Day in Phuket
How to Decorate Your Apartment in Bangkok on a Budget
By pechevill Tue 28 Mar 2023 2:46 pm Board English Language
1
960
Wed 29 Mar 2023 2:43 pm By Justastoryteller View Topic How to Decorate Your Apartment in Bangkok on a Budget
Report a problem using the EAN-13 barcode generator program
By Thanapoom1514 Tue 28 Mar 2023 11:08 am Board English Language
0
1642
Tue 28 Mar 2023 11:08 am By Thanapoom1514 View Topic Report a problem using the EAN-13 barcode generator program
Report a problem using the program to calculate the air conditioning (BTU)
By Tookta Tue 28 Feb 2023 10:13 am Board English Language
0
2216
Tue 28 Feb 2023 10:13 am By Tookta View Topic Report a problem using the program to calculate the air conditioning (BTU)
Report an issue with the taxi rate calculation program
By flook Tue 21 Feb 2023 11:59 am Board English Language
0
1508
Tue 21 Feb 2023 11:59 am By flook View Topic Report an issue with the taxi rate calculation program
Report a problem using the Program for calculating land price per unit
By Thanapoom1514 Mon 20 Feb 2023 10:54 am Board English Language
0
2815
Mon 20 Feb 2023 10:54 am By Thanapoom1514 View Topic Report a problem using the Program for calculating land price per unit
Report a problem using the total land price calculation program
By Thanapoom1514 Mon 20 Feb 2023 10:24 am Board English Language
0
1385
Mon 20 Feb 2023 10:24 am By Thanapoom1514 View Topic Report a problem using the total land price calculation program