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