$arr = include "inc/routes.php";
в методах не должно быть никаких include, никогда. передай значение явно, как угодно:
$arr = include "inc/routes.php";
$router = new Router($arr);
// или
$router->setRoutes($arr);
$routs = '#^'.$routs.'$#';
почему это здесь? описание роута должно быть уже законченным в твоем файле роутов "inc/routes.php", класс ничего не должен добавлять к регулярному выражению.
spl_autoload_register() Есть и исправно работает.
$path = 'inc/classes/'.ucfirst($this->params['controller']);
Это говнокод все. Никаких директорий inc, никаких classes. Все должно быть оопшно и красиво, никаких require.
Начинай сразу делать правильно.
Берешь эту
статью и пытаешься сделать автозагрузку стандарта PSR-4 до тех пор пор, пока у тебя не получится. Что бы все лежало в пространстве имён.
Тебе нужно скачать композер, для windows composer.phar, через консоль запустить создание своего composer.json, в статье той тебе НЕ нужно всё, что относится к " подразделы: classmap, files", придумаешь имя себе (vendorname) и имя пакета своего (myfirstgovnokod) далее, когда всё правильно сделаешь у тебя будет всё как правильно - автозагрузка, возможность устанавливать пакеты из вне и правильный подход.
Сделаешь - покажешь.
Вот пример что примерно должно получиться:
/composer.json
{
"name": "vendorname/myfirstgovnokod",
"require": {},
"autoload": {
"psr-4": {
"Govnokod\\": "src"
}
}
}
/src/Test.php
<?php
namespace Govnokod;
class Test
{
}
/index.php
<?php
include 'vendor/autoload.php';
use Govnokod\Test;
$test = new Test();
print_r($test);