47 lines
1.2 KiB
PHP
47 lines
1.2 KiB
PHP
<?php
|
|
/**
|
|
* @package Bicycle
|
|
* @author Egor Isaev
|
|
* @description BaseController.php
|
|
* @copyright (c) 23/06/2026
|
|
*/
|
|
|
|
namespace System\Classes;
|
|
|
|
/**
|
|
* Голое ядро контроллера — жизненный цикл экшена: before() → {action} → after().
|
|
* Нейтрально к вебу/API. Наследник Controller добавляет рендеринг и политику.
|
|
*/
|
|
abstract class BaseController
|
|
{
|
|
/**
|
|
* Хук перед экшеном. Переопределяется наследниками
|
|
* (проверка CSRF, авторизация и т.п.).
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function before(): void {}
|
|
|
|
/**
|
|
* Хук после экшена.
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function after(): void {}
|
|
|
|
/**
|
|
* Выполняет экшен в обёртке before()/after().
|
|
*
|
|
* @param string $action Имя метода экшена (например 'indexAction')
|
|
* @return string Тело ответа
|
|
*/
|
|
public function executeAction(string $action): string
|
|
{
|
|
$this->before();
|
|
$body = $this->$action();
|
|
$this->after();
|
|
|
|
return $body;
|
|
}
|
|
}
|