Здравствуйте,
Как Вы можете видеть с кода, я не долгое время изучаю программирование :), и надеюсь на понимание.
Сейчас пытаюсь разобраться с построением Роутинга и столкнулся с проблемой как мне динамически загружать классы с неймспейсами в PHP.
Вот мой роутер :)
<?php
namespace library;
use controllers;
class Router {
public $url;
public $controller;
public $method;
public function __construct(){
$this->includePath();
if(!$this->parseUrl()){
$this->controller = 'ControllerSite';
}else{
$this->controller = 'Controller'.ucfirst($this->url[0]);
}
$path = 'frontend/../controllers/'.$this->controller.'.php';
if(file_exists($path))
{
unset($this->url[0]);
}
if(!isset($this->url[1])){
$this->method = 'IndexMethod';
}else{
$this->method = $this->url[1];
}
$name = 'controllers\\'.$this->controller;
$this->controller = new $name();
// echo $this->controller;
}
private function includePath(){
$paths = array(
ROOT,
get_include_path()
);
set_include_path(implode(PATH_SEPARATOR,$paths));
}
private function parseUrl(){
if($_GET[r]){
$parsed = explode('/',filter_var(rtrim($_GET[r],'/'),FILTER_SANITIZE_URL));
$this->url = $parsed;
return $this->url;
}
}
}
class Autoloader {
static function autoload($className){
if(!preg_match('/Controller/',$className)){
if(file_exists(str_replace('\\','/',$className).'.php')){
require_once $className.'.php';
}
}else{
echo $className.'<br>';
require_once ROOT.'../'.$className.'.php';
}
}
}
spl_autoload_register('library\Autoloader::autoload');