Bicycle/System/Classes/BaseController.php
Egor Isaev b3c8188ee3 dev
2026-06-23 16:30:58 +03:00

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;
}
}