Роутинг в 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
195 +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 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир