Роутинг в Slim: как передать объект $app в функцию класса? Здравствуйте.
В документации к фреймворку не нашел, как привязать определенный метод (например, POST) к функции класса. Например, есть класс User, у него определяем функции get(), create(), update() и т.д., затем настраиваем роутинг: каждый метод на соответствующую ему функцию (GET->get(), POST->create() и т.д.) Как считаете, это вообще нормальная архитектура? Или как правильнее сделать?
На stackoverflow нашел такое решение: $app->get('/', '\Pages:home');
То есть home это static-функция класса Pages. Но как тогда в ней использовать объект $app?
Примеров по разработке чего-нибудь на Slim не нашел, только с процедурной парадигмой..
PS. нужно написать RESTfull API.

21 Авг 2019 в 07:05
165 +1
0
Ответы
1

Для передачи объекта $app в функцию класса в Slim, вы можете использовать зависимости контейнера Slim. Это позволяет вам определить зависимости для вашего контейнера, чтобы вы могли передать объект $app в ваши классы.

Пример:

Создайте контейнер Slim и определите зависимость для объекта $app:use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
$app = AppFactory::create();
$container = $app->getContainer();
$container['app'] = function ($container) use ($app) {
return $app;
};Определите маршруты и привяжите их к методам вашего класса:$app->get('/users', function (Request $request, Response $response) {
// Получить объект $app из контейнера
$app = $this->get('app');
// Создать экземпляр класса User
$user = new User($app);
// Вызвать метод get() класса User
$user->get($request, $response);
return $response;
});В вашем классе User используйте объект $app:class User
{
protected $app;
public function __construct($app)
{
$this->app = $app;
}
public function get($request, $response)
{
// Используйте объект $app здесь
}
}

Таким образом, вы передаете объект $app из контейнера Slim в ваш класс User и можете использовать его в методах вашего класса. Это позволит вам разделить логику вашего приложения на классы и сохранить чистоту кода.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир