سلام
خیلی ممنون که توجه کردید ؟
من با این کد عمل روتر رو انجام میدم اما نمیدونم چرا کار نمیکنه ؟
<?php
class Router
{
private $registry;
private $path;
private $args=array();
private $file;
private $controller;
private $action;
function __construct($registry)
{
$this->registry=$registry;
}
function setPath($path)
{
if(is_dir($path) == false)
{
throw new Exception('invlide controller path:'.$path.'');
}
$this->path = $path;
}
public function loader()
{
$this->getController();
if(is_readable($this->file) == false)
{
$this->file = $this->path.'/error404.php';
$this->controller = 'error404';
}
include $this->file;
$class=$this->controller.'Controller';
$controller= new $class($this->registry);
if(is_callable(array($controller,$this->action)) == false)//function exists in class
{
$this->action='index';
}
else
{
$action=$this->action;
}
$controller->$action();
}
/*$route=(empty($_GET['rt'])) ? '' : $_GET['rt'];*/
private function getController()
{
echo $_SERVER['REQUEST_URI'];
$base="/meysam_mvc/";
$route=$_SERVER['REQUEST_URI'];
$route=str_replace($base,"",$route);
if(empty($route))
{
$route='index';
}
else
{
$parts=explode('/',$route);
$this->controller = $parts[0];
if(isset($parts[1]))
{
$this->action = $parts[1];
}
}
if(empty($this->controller))
{
$this->controller = 'index';
}
if(empty($this->action))
{
$this->action = 'index';
}
$this->file=$this->path.'/'.$this->controller.'.php';
}
}
?>
با تشکر