Triangle Engine
triangle/engine — это ядро Triangle Framework, предоставляющее базовую функциональность для всех компонентов и приложений.
Установка
composer require triangle/engine
Основные компоненты
App
Абстрактный класс приложения, наследующийся от localzet\ServerAbstract.
<?php
namespace App;
use Triangle\Engine\App as EngineApp;
class App extends EngineApp
{
// Переопределите методы для настройки приложения
}
Container
Контейнер зависимостей (DI Container) для управления зависимостями приложения.
use Triangle\Engine\Container;
// Регистрация сервиса
Container::set('service', function() {
return new MyService();
});
// Получение сервиса
$service = Container::get('service');
// Проверка существования
if (Container::has('service')) {
// ...
}
Config
Система конфигурации для работы с настройками приложения.
Загрузка конфигурации:
- Конфигурационные файлы из
config/загружаются автоматически при старте - Файлы должны возвращать массивы через
return [...] - Исключение:
config/route.php— это исполняемый код, не конфигурация
use Triangle\Engine\Config;
// Получение значения
$value = Config::get('app.name');
// Получение с значением по умолчанию
$value = Config::get('app.debug', false);
// Установка значения
Config::set('app.name', 'My App');
// Перезагрузка конфигурации
Config::reload();
// Вспомогательная функция
config('app.name');
Структура конфигурации:
Конфигурационные файлы объединяются в единое дерево:
config/app.php→config('app.name')config/database.php→config('database.default')config/middleware.php→config('middleware.')
Request & Response
Классы для работы с запросами и ответами.
use Triangle\Engine\Request;
use Triangle\Engine\Response;
// Работа с запросом
$request = Request::current();
// Получение данных запроса
$input = $request->input('key');
$header = $request->header('Content-Type');
$method = $request->method();
$path = $request->path();
// Работа с ответом
Response::success($data);
Response::error($message, $code);
Response::json($data);
Exception Handling
Система обработки исключений.
use Triangle\Exception\NotFoundException;
use Triangle\Exception\BusinessException;
// Выброс исключений
throw new NotFoundException('Resource not found');
throw new BusinessException('Business logic error');
// Кастомный обработчик исключений
use Triangle\Exception\ExceptionHandlerInterface;
class MyExceptionHandler implements ExceptionHandlerInterface
{
public function handle($exception)
{
// Обработка исключения
}
}
Структура проекта
app/
├── controller/ # Контроллеры
├── middleware/ # Middleware
├── model/ # Модели
└── view/ # Представления
config/ # Файлы конфигурации
├── app.php # Настройки приложения (return array)
├── route.php # Маршруты (исполняемый PHP код)
├── middleware.php # Middleware (return array)
├── database.php # База данных (return array)
└── ...
public/ # Публичная директория
runtime/ # Временные файлы
├── logs/ # Логи
├── sessions/ # Сессии
└── views/ # Скомпилированные представления
Автозагрузка
Система автозагрузки автоматически загружает классы из компонентов и плагинов:
use Triangle\Engine\Autoload;
// Запуск автозагрузки
Autoload::start();
Автозагрузка включает:
- Автозагрузку классов через Composer
- Загрузку файлов из
autoload/директории - Инициализацию компонентов
Bootstrap
Система инициализации компонентов:
use Triangle\Engine\Bootstrap;
// Запуск bootstrap
Bootstrap::start();
Компоненты автоматически регистрируются через свои классы Bootstrap:
Triangle\Router\BootstrapTriangle\Middleware\BootstrapTriangle\Database\Bootstrap- И другие...
Плагины
Установка плагина
Плагины устанавливаются автоматически при установке через Composer:
composer require vendor/plugin-name
Управление плагинами
use Triangle\Engine\Plugin;
// Получение конфигурации плагина
$config = Plugin::getPluginConfig('plugin-name');
// Проверка установки
if (Plugin::isInstalled('plugin-name')) {
// ...
}
Вспомогательные функции
Engine предоставляет множество вспомогательных функций:
// Пути
base_path(); // Корневая директория
app_path(); // Директория приложения
config_path(); // Директория конфигурации
public_path(); // Публичная директория
runtime_path(); // Директория временных файлов
plugin_path(); // Директория плагинов
// Конфигурация
config('key'); // Получение значения конфигурации
// Логирование
Log::info('message');
Log::warning('message');
Log::error('message');
// Кэширование
Cache::get('key');
Cache::set('key', 'value');
Cache::delete('key');
// Ответы
response('text'); // Текстовый ответ
response()->json($data); // JSON ответ
redirect('/path'); // Редирект
Конфигурация
Основные файлы конфигурации:
config/app.php— настройки приложенияconfig/bootstrap.php— классы для инициализацииconfig/container.php— настройки контейнера зависимостейconfig/log.php— настройки логированияconfig/route.php— исполняемый код для регистрации маршрутов (не конфигурация!)
Важные отличия конфигурационных файлов
-
Большинство файлов (
app.php,database.php,middleware.phpи т.д.) — это конфигурационные файлы, которые возвращают массивы черезreturn [...]. -
route.php— это исключение! Это исполняемый PHP-код, который подключается черезrequire_onceи содержит прямые вызовыRouter::get(),Router::post()и т.д.
Это различие важно понимать при работе с фреймворком.