gubin_niko
@gubin_niko

Как в Slim Framework организовать автозагрузку классов?

Доброй ночи, друзья.

Решил познакомиться с Slim'ом и уже подобрал проект для обучения. Работаю так же с Laravel, потому namespace's уже вошли в привычку. Установил для начала пакет slim/slim-skeleton.

У Slim есть возможность в routes прописать, какой класс и метод вызвать. Отлично.
Но что с автозагрузкой этих самых классов? Я сделал некий "костыль", для начала:

$container = $app->getContainer();

// Руками подключаю файл с нужным классом
require __DIR__ . '/Controllers/Controller.php';

// Помещаю в контейнер
$container['Controller'] = function ($container) {
  return new Src\Controllers\Controller();
};


Но на то он и "костыль". Не верю, что до меня никто не реализовал более элегантный способ. Никакой документации я не нашёл, может плохо искал, потому буду рад любой ссылке с полезной информацией.

P.S. Устанавливал Slim через composer.
  • Вопрос задан
  • 673 просмотра
Пригласить эксперта
Ответы на вопрос 2
riky
@riky
Laravel
по идее автолоад должен быть через composer.
см composer autoload
Ответ написан
gubin_niko
@gubin_niko Автор вопроса
Я, как обычно, сам спросил и сам ответил.
Но, думаю, это будет полезно всем другим, у кого появится такой же вопрос.

Необходимо прописать в composer.json:

"autoload": {
    "psr-4": {
      "App\\": "src/App"
    }
  }

где "src/App" путь к директории с вашими классами.

После обновляем composer и теперь автозагрузчик будет успешно подгружать классы.
Так же очень просто прописать в routes:

$app->get('/', 'App\Controllers\Site\NameController:index');

и автозагрузчик подгрузит NameController и выполнится метод index.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 07:47
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект