PHPackages                             sqrt-pro/kernel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. sqrt-pro/kernel

ActiveLibrary[Framework](/categories/framework)

sqrt-pro/kernel
===============

Kernel is part of SQRT Framework

0.1(10y ago)01.4k1MITPHP

Since May 31Pushed 10y ago2 watchersCompare

[ Source](https://github.com/sqrt-pro/Kernel)[ Packagist](https://packagist.org/packages/sqrt-pro/kernel)[ Docs](http://fw.sqrt.pro)[ RSS](/packages/sqrt-pro-kernel/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (3)Used By (1)

SQRT\\Kernel
============

[](#sqrtkernel)

Компонент содержит базовые классы контроллера, RouteCollection и Kernel.

Для адресации используется компонент [Route](http://route.thephpleague.com) и DI [Container](http://container.thephpleague.com).

Контроллер
----------

[](#контроллер)

Все создаваемые контроллеры должны наследовать базовый класс Controller. Каждый action контроллера должен вернуть результат для выдачи в браузер, это может быть:

- объект Response
- объект Template
- массив (будет преобразован в JsonResponse)
- значение для вывода (строка, число, и т.п.)

Базовый класс контроллера имеет набор методов для типовых действий:

- `getRequest()` - получить объект Request
- `getUrl()` - получить текущий URL
- `getSession($autostart = true)` - получить объект Session. Сессия стартует при первом вызове, если она явно не была запущена ранее.
- `isAjax()` - проверка, что сделан Ajax-запрос. Альяс для `$this->getRequest()->isXmlHttpRequest()`

### Ошибки

[](#ошибки)

- `notFound()` - выбрасывает `HttpException` с кодом 404
- `forbidden()` - выбрасывает `HttpException` c кодом 403

### Редирект

[](#редирект)

- `redirect($url, $status = null)` - возвращает объект RedirectResponse. По-умолчанию HTTP статус 302.
- `back()` - редирект на HTTP\_REFERER. Если HTTP\_REFERER не указан, возвращает на главную страницу.

### Шаблонизатор

[](#шаблонизатор)

В системе используется шаблонизатор [Plates](http://platesphp.com), основанный на нативном синтаксисе PHP.

В контроллере предусмотрены методы для работы с шаблонами:

- `template($name, $data = null)` - Для создания объекта шаблона
- `render($name, $data = null)` - Создание и рендер шаблона

При необходимости донастройки, можно получить объект Engine или полностью переопределить его:

- `getTemplatesEngine()` - получить объект Engine
- `setTemplatesEngine(Engine $engine)` - задать объект Engine

В комплекте также идут два расширения для Plates, упрощающие работу с всплывающими сообщениями (FlashBag) и URL. При использовании полного фреймворка они включены по-умолчанию, а также расширение [`Asset`](http://platesphp.com/extensions/asset/).

При подключении расширения `SQRT\Plates\Extension\URL` в шаблоне добавляется метод `url()` возвращающий текущий объект URL. По-умолчанию в фреймворке передается объект URLImmutable.

При подключении расширения `SQRT\Plates\Extension\DB` в шаблоне добавляется метод `db()` возвращающий менеджер БД.

При подключении расширения `SQRT\Plates\Extension\User` в шаблоне добавляется метод `user()` возвращающий текущего авторизованного пользователя.

### Всплывающие сообщения (Flash-messages)

[](#всплывающие-сообщения-flash-messages)

В контроллере есть метод `notice($message, $type = null)` добавляющий в сессию текущего пользователя всплывающее сообщение. Такое сообщение один раз показывается пользователю и затем исчезает.

Можно получить все сообщения с помощью метода `getNotices()`, являющегося альясом для `$this->getSession()->getFlashBag()->all()`

Сообщения группируются по типу, можно указывать произвольный тип, затем использовать его для оформления сообщений:

```
// Пример стандартного шаблона для отображения уведомлений
