diff --git a/App/Controller/IndexController.php b/App/Controller/IndexController.php index 968c4e2..2c3c308 100644 --- a/App/Controller/IndexController.php +++ b/App/Controller/IndexController.php @@ -20,8 +20,6 @@ use System\Classes\MyException; class IndexController extends Controller { /** - * Главная страница: GET-запрос к внешнему API, вывод todo в шаблон. - * * @return string * @throws MyException */ diff --git a/App/Repositories/BudgetRepository.php b/App/Repositories/BudgetRepository.php index fbfbf11..70631c5 100644 --- a/App/Repositories/BudgetRepository.php +++ b/App/Repositories/BudgetRepository.php @@ -9,7 +9,6 @@ namespace App\Repositories; use PDO; -use System\Classes\MyException; use System\Classes\Repository; /** @@ -24,7 +23,6 @@ class BudgetRepository extends Repository /** * @return array - * @throws MyException */ public function getB(): array { diff --git a/CLAUDE.md b/CLAUDE.md index a104a6c..529463d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -80,7 +80,7 @@ PhpStorm может показывать предупреждение «Namespac |---|---| | `System\Classes\Core` | Bootstrap, обработка ошибок, поиск файлов (`findFile`), константы среды | | `System\Classes\BaseController` | Голое ядро (abstract); жизненный цикл `executeAction()`: `before()` → экшен → `after()` | -| `System\Classes\Controller` | Веб-контроллер (extends BaseController): `render()`/`renderContent()` + авто-CSRF в `before()` + `json()` | +| `System\Classes\Controller` | Веб-контроллер (extends BaseController): `render()`/`renderContent()` + авто-CSRF в `before()` + `json()` + заголовок `X-Profiler` в `after()` для admin | | `System\Classes\View` | Рендеринг `.html`-шаблонов через `ob_start` + `extract` + `include`; `setStyle()`/`setScript()`/`setManifest()`+`getStyles()`/`getScripts()` — подключение CSS/JS из шаблона | | `System\Classes\ProfilerToolbar` | Debug-панель внизу страницы (аналог ProfilerToolbar для Kohana): время/память/SQL из `Profiler`; `render()` — пусто, если пользователь не admin | | `System\Classes\Route` | Автоматический роутинг: парсит URI, ищет контроллер в `App/Controller/` | @@ -439,9 +439,8 @@ GeSHi) из оригинала не переносились — устарев - **SQL** — из `Services\DataBase\Classes\Profiler` (см. раздел DataBase выше): время, текст запроса, параметры, `EXPLAIN` для SELECT-запросов (прогоняется заново через `Database::instance()` в момент рендера панели, - не при исполнении самого запроса; ошибка `EXPLAIN` → `—`, не ломает панель). Сам `EXPLAIN` — тоже - обычный `query()`, поэтому попадает в `Profiler`, но счётчик/время в шапке панели ("SQL: N (X ms)") - захватываются до его выполнения — иначе панель считала бы свои же debug-запросы. + не при исполнении самого запроса; ошибка `EXPLAIN` → `—`, не ломает панель). Сам `EXPLAIN` выполняется + с `Statement::$skip_profiling = true` — иначе попал бы в тот же `Profiler` и засорял бы свой же счётчик. - **Vars** — `GET`/`POST`/`COOKIE`/`SESSION`/`SERVER`; чувствительные ключи (`Log::$mask_keys`: `password`, `pass`, `csrf_token`, `token`) маскируются `***` — та же маска, что и в `Log`. - **Files** — все подключённые к запросу файлы (`get_included_files()`) с размером и общим итогом. @@ -455,6 +454,33 @@ GeSHi) из оригинала не переносились — устарев в проекте). Верхняя строка сворачивает/разворачивает панель, кнопки переключают вкладки — инлайн `onclick` + один `