Composer генерирует автозагрузчик на основе раздела autoload
, который вы вставили в composer.json
:
"autoload":{
"psr-4":{
"Links\\Controllers\\":"app/controllers",
"Links\\Models\\":"app/models"
}
}
В нем говорится, что классы в пространстве имен Links\Controllers
можно найти в файлах с тем же именем, что и класс (и окончание .php
) в каталоге app/controllers
. Аналогично для пространства имен Links\Models
.
Основной скрипт:
Toro::serve(array(
"/" => "HomeController";
));
указывает маршрутизатору использовать класс HomeController
для обслуживания запросов на /
.
Кстати, точка с запятой (;
) после "HomeController" is a syntax error; the code doesn't even start because it doesn't compile. There should be a comma (
, `) там, а не точка с запятой.
Поскольку класс HomeController
еще не был объявлен, для его поиска вызывается автозагрузчик, и он не работает, потому что у него нет информации о том, где найти классы из глобального пространства имен.
Вы поместили класс HomeController
в файл app/controllers/HomeController.php
, но этого недостаточно. Автозагрузчик читает этот файл, когда интерпретатору нужно использовать класс Link\Controllers\HomeController
, а этот класс еще не был объявлен.
Этого не происходит в app/controllers/HomeController.php
. Этот файл объявляет класс HomeController
, который не помещается ни в какое пространство имен, поэтому он принадлежит глобальному пространству имен. Чтобы поместить его в пространство имен Links\Controllers
, вы должны поместить эту строку объявления перед любым другим оператором в app/controllers/HomeController.php
:
namespace Links\Controllers;
Теперь у вас имя класса Links\Controllers\HomeController
. Измените код, который его использует:
Toro::serve(array(
'/' => 'Links\Controllers\HomeController',
));
и должно работать.