Всем привет) Недавно начал писать небольшой движек и собсно возник некий вопросец на счет роутера.. Допустим, приложение запускается таким образом
т.е вызовом автолоадера и запуском приложения
autoload-ер простой, но суть и смысл прямой
Приложение анализарует пути, выполняет поиск контроллера и экшина и вызывает их.
ну и собсно роутер, над которым я думаю))
Дело не в том что я что-то не могу написать, а как правильно всё это реализовать..
Заранее спасибо..
Посты типа что это такое и т.п - проходим мимо.
require "framework/autoload.php";
(new \framework\classes\application())->run();
т.е вызовом автолоадера и запуском приложения
autoload-ер простой, но суть и смысл прямой
function __autoload($class)
{
$class = str_replace(array("\\","_"),"/",$class) . ".php";
if(file_exists($class))
{
require $class;
}
}
Приложение анализарует пути, выполняет поиск контроллера и экшина и вызывает их.
<?php
namespace framework\classes;
class application
{
public $default_controller_name="welcome";
public $routing=null;
public function __construct()
{
$this->routing=new routing();
$this->routing->collect();
}
public function run()
{
$class_name ="\\application\\controllers\\";
$class_name.=array_shift(
$this->routing->routes
);
if(!class_exists($class_name))
{
$class_name ="\\application\\controllers\\";
$class_name.=$this->default_controller_name;
}
$controller_name=$class_name;
$controller=new $controller_name();
$method_name=array_shift(
$this->routing->routes
);
if(!method_exists($controller,$method_name))
{
$method_name=$controller->default_action_name;
}
$action_name=$method_name;
$controller->$action_name(
$this->routing->routes
);
}
}
ну и собсно роутер, над которым я думаю))
<?php
namespace framework\classes;
class routing
{
public $routes=[];
public function __construct(){}
public function collect()
{
$routes=array_filter(explode("/", $_SERVER['REQUEST_URI']));
foreach ($routes as $route)
{
$this-> routes[]= $route;
}
}
}
Дело не в том что я что-то не могу написать, а как правильно всё это реализовать..
Заранее спасибо..
Посты типа что это такое и т.п - проходим мимо.