Добрый день.
Учусь писать router php.
Просьба воздержаться от советов изучения framework-ом или готовых route-ов, я этим уже занимаюсь) но я лучше всего понимаю когда сам пишу.
У меня есть Index.php c кодом
<?php
require_once __DIR__.'/vendor/autoload.php';
use Controllers\User as User;
use Controllers\Route as Route;
use Controllers\Magic as Magic;
$route = new Route();
$route->run();
я использую composer и autoload работает.
В Router у меня следующее:
namespace Controllers;
Class Route
{
public $_class;
public $_method;
public function __construct()
{
$request = $_SERVER['REQUEST_URI'];
$uri = explode('/',$request);
if(isset($uri['1'])){
$this->_class = $uri['1'];
}
if(isset($uri['2'])){
$this->_method = $uri['2'];
}
}
public function run()
{
//Magic::pr(get_declared_classes());
$name = $this->_class;
$class = new $name();
if(class_exists(__NAMESPACE__."/".$this->_class)){
Magic::pr($this->_class);
}else{
echo $this->_class."Class Not exists!";
}
Так же есть тестовый класс User который говорит привет)
Проблема в том когда я делаю запрос на адрес localhost/User тоесть передаю в $uri['1'] = User и хочу потом создать экземпляр класса, то получаю ошибку о несуществовании такого класса.
Испробовал уже все что смог. добавлял __NAMESPACE__, пробовал вызывать в Index.php ничего.
если просто прописать в index.php $a = new User(): все работает.
Подскажите куда копать?