Я создаю веб-приложение с Slim и Twig. Библиотеки, которые я использую, работают отлично, я могу без проблем вызывать их. Однако мои собственные классы не обнаруживаются composer.json с автозагрузкой psr-4 (psr-0 их тоже не находит)
Вот моя файловая система:
project
|composer.json
|src
|public
| |index.php
|classes
| |Application.php
| |middlewares
| |SecurityMiddleware.php
|templates
|TemplateController.php
|main
|MainController.php
Вот мой composer.json
:
{
"authors": [
{
"name": "Jean-Marc ZIMMER",
"email": "################@gmail.com",
"role": "Developer"
}
],
"require": {
"slim/slim": "^3.11",
"slim/extras": "*",
"twig/twig": "^2.5",
"slim/twig-view": "^2.4",
"slim/views": "^0.1.3"
},
"autoload": {
"psr-4": {
"src\\": "src",
"middlewares\\": "src/classes/middlewares",
"classes\\": "src/classes",
"templates\\": "src/templates"
}
}
}
Тогда src/classes/Application.php
:
<?php
namespace classes;
class Application extends \Slim\App {
public function __construct($container = array()) {
parent::__construct($container);
}
}
И, наконец, мой index.php
файл:
<?php
require '../../vendor/autoload.php';
$app = new \classes\Application([
"settings" => [
"displayErrorDetails" => true
]
]);
$app->run();
Когда я запускаю composer dump-autoload
, команда выводит:
Сгенерированные файлы автозагрузки, содержащие 0 классов
затем выходит с кодом состояния 0. Должно быть найдено 4 класса, верно?
И запуск приложения показывает ошибку:
Неустранимая ошибка: необученная ошибка: класс 'classes \ Application' не найден в /opt/lampp/htdocs/project/src/public/index.php:5
Я уверен, что я что-то упускаю, указывая пространство имен или что-то. Кто-нибудь может мне помочь?
редактирует:
Я попытался использовать параметр --optimize или --classmap-authoritative для dump-autoload. Ничего не изменилось.
Добавление '/' к именам папок в composer.json ничего не меняет.