Класс App
Перед началом использования фреймворка необходимо создать класс (например, App
), который должен наследоваться от абстрактного класса FSA\Neuron\App
.
Внутри класса необходимо объявить методы, которые, по сути, являются константами:
class App extends FSA\Neuron\App
{
protected static function constVarPrefix(): string
{
return "my_app";
}
protected static function constSessionName(): string
{
return "my_app";
}
protected static function constSettingsFile(): string
{
return __DIR__ . '/../settings.php';
}
}
Назначение методов:
App::constVarPrefix()
- префикс, используемый во всех ключах Redis, используемых фреймворком;App::constSessionName()
- префикс, используемый для имён Cookie, предназначенных для аутентификации пользователей, не используется, если не указана переменная окруженияSESSION_NAME
;App::constSettingsFile()
- путь до файла с настройками сайта.
При необходимости, можно передать в шаблоны необходимые значения, например, имя сайта и данные сессии пользователя и другое:
protected static function getContext(): array
{
return [
'title' => 'MyApp',
'session' => self::session(),
...
];
}
Если требуется дополнительная инициализация приложения, то можно переопределить метод App::init()
, например, можно открыть подключение к системному журналу, чтобы в дальнейшем использовать команду syslog
:
public static function init()
{
parent::init();
ini_set('syslog.filter', 'raw');
openlog('my_app', LOG_PID | LOG_ODELAY, LOG_USER);
}
Шаблоны страниц располагаются в пространстве имён Templates
. Однако эти значения можно переопределить, создав метод App::getTemplates()
:
protected static function getTemplates(): array
{
return [
\Templates\Main::class,
\Templates\Login::class,
\Templates\Message::class
];
}
Методы для работы с ответом
App::init(): Response
Простая инициализация, если не требуется вывод. Обычно должны использоваться App::initHtml()
или App::initJson()
.
App::initHtml(): ResponseHtml
Инициализация режима вывода HTML. Производит вызов App::init()
и устанавливает перехват исключений, в результате чего любые ошибки в коде будут направляться пользователю в виде страницы с ошибкой или всплывающего окна. Метод возвращает объект response, тот же, что будет возвращать App::response()
.
App::initJson(): ResponseJson
Инициализирует режим вывода JSON. Производит вызов App::init()
и устанавливает перехват исключений, в результате чего ошибки в коде будут направляться в виде JSON ответа с описанием ошибки или в виде кода ошибки HTML. Метод возвращает объект response, тот же, что будет возвращать App::response()
.
App::response(): Response|ResponseHtml|ResponseHTML
Возвращает объект response, который позволяет с помощью своих методов отправлять ответы в ранее инициализированном формате.
Методы для взаимодействия с базами данных
App::sql(): PDO
Возвращается объект PostgreSQL, который является потомком PDO. Объект всегда создаётся в единственном экземпляре.
App::sqlCallback(): callable
Возвращает объект, который можно передать в другие методы в виде функции обратного вызова, которая будет вызывать App::sql()
. В отличии от последней, если внутри метода не происходит обращения к базе данных, то соединение с базой данной не инициализируется.
App::redis(): Redis
Возвращается объект RedisDB, который является потомком Redis. Объект всегда создаётся в единственном экземпляре.
App::redisCallback(): callable
Возвращает объект, который можно передать в другие методы в виде функции обратного вызова, которая будет вызывать App::redis()
. В отличии от последней, если внутри метода не происходит обращения к базе данных, то соединение с базой данной не инициализируется.
Методы для работы с сессией пользователя
App::session(): Session
Возвращает объект Session, который содержит информацию о сессии пользователя.
App::login(
string $login,
string $password
): void
Позволяет начать сессию пользователя, если его login
и password
будут опознаны.
App::logout(): void
Завершает текущую сессию пользователя.
Методы для работы с настройками приложения
App::getSettings(
string $name,
mixed $default_value = null
): mixed
Возвращает значение из файла настроек.
Список параметров:
name
- наименование раздела в файле настроек;default_value
- значение, которое будет возвращено, если заданного пункта в настройках не нашлось.
Методы для работы с переменными приложения
Сохранение производится в базе данных Redis. Каждая переменная получает префикс приложения.
App::setVar(
string $name,
mixed $value
): bool
Сохраняет значение переменной.
Возвращает true
в случае успеха, или false
при возникновении ошибок.
Список параметров:
name
- имя переменной;value
- значение переменной.
App::getVar($name): string|bool
Возвращает значение переменной, установленной через App::setVar
. В случае возникновения ошибки может вернуть false
.
App::setVarJson(
string $name,
mixed $value
): bool
Аналогично App::setVar
, но при сохранении значения производится JSON-кодирование входных данных.
App::getVarJson(string $name): mixed
Аналогично App::getVar
, но полученное значение обрабатывается функцией json_decode
.
App::delVar(string $name): int
Удаляет значение переменной. Возвращает количество удалённых ключей.