Как построить скелет классического приложения на Slim PHP? Изучаю доки Slim. Роутер: $app->get('/[{name}]', function ($request, $response, $args) {
return $this->renderer->render($response, 'index.phtml', $args);
});
Все роуты у нас в файле routes.php (который в свою очередь подключён к точке входп). Насколько я понял функция в роуте у нас выполняет роль контроллера? По идее я могу сделать отдельную папку с контроллерами, потому что держать всё в одном файле не очень так как функции будут большие. Как в Slim это правильно сделать?

21 Авг 2019 в 07:01
186 +1
0
Ответы
1

Да, вы правильно поняли, что функция в роуте выполняет роль контроллера. Идеальным вариантом для организации кода в Slim PHP будет использование отдельных контроллеров для каждого маршрута или группы маршрутов.

Чтобы создать отдельные контроллеры, вы можете создать папку "Controllers" в вашем проекте и поместить туда файлы с классами контроллеров. Например, вы можете создать файл "HomeController.php" со следующим содержанием:

<?php
namespace App\Controllers;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
class HomeController
{
protected $renderer;
public function __construct($renderer)
{
$this->renderer = $renderer;
}
public function index(Request $request, Response $response, $args)
{
return $this->renderer->render($response, 'index.phtml', $args);
}
}

Затем в файле routes.php вы можете подключить этот контроллер и вызвать метод index():

use App\Controllers\HomeController;
$app->get('/[{name}]', HomeController::class . ':index');

Это позволит разделить логику вашего приложения на более удобные и поддерживаемые части, что облегчит вам работу с кодом и его расширение в будущем.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир