Архитектура Triangle Framework

Triangle Framework — это модульный высокопроизводительный PHP-фреймворк, построенный на основе Localzet Server. Фреймворк разработан для замены традиционной архитектуры PHP-FPM и предназначен для разработки веб-приложений, HTTP-интерфейсов и микросервисов.

Общая структура

Triangle Framework состоит из следующих основных компонентов:

Ядро (Engine)

triangle/engine — это базовое ядро фреймворка, которое предоставляет:

  • Абстракцию приложения (Triangle\Engine\App)
  • Контейнер зависимостей (Triangle\Engine\Container)
  • Систему конфигурации (Triangle\Engine\Config)
  • Обработку запросов и ответов (Triangle\Engine\Request, Triangle\Engine\Response)
  • Систему исключений и обработчиков ошибок
  • Поддержку плагинов и автозагрузки
  • Вспомогательные функции (кэширование, логирование, переводы)

Компоненты (Components)

Модульные библиотеки, расширяющие функциональность ядра:

  • triangle/console — консольные команды и CLI-инструменты
  • triangle/router — система маршрутизации
  • triangle/middleware — промежуточное ПО (middleware)
  • triangle/database — работа с базами данных (на основе Illuminate Database)
  • triangle/view — система шаблонизации
  • triangle/session — управление сессиями
  • triangle/events — система событий
  • triangle/cron — планировщик задач

Движки (Engines)

Слои приложений, построенные на основе Engine:

  • triangle/engine-http — HTTP-слой для обработки HTTP-запросов
  • triangle/engine-ws — WebSocket-слой для работы с WebSocket-соединениями

Важно: Движки engine-http и engine-ws являются взаимоисключающими (не могут использоваться одновременно).

Плагины (Plugins)

Дополнительные модули расширения:

  • triangle/oauth — OAuth-аутентификация с поддержкой множества провайдеров
  • triangle/media — обработка медиа-файлов
  • triangle/pusher — система push-уведомлений
  • triangle/multiconnect — шлюз для множественных подключений

Фреймворки (Frameworks)

Готовые рабочие окружения:

  • triangle/web — полнофункциональный HTTP-фреймворк (MVC)
  • triangle/ws — WebSocket-фреймворк для real-time приложений

Принцип модульности

Triangle Framework построен по принципу модульности:

  1. Независимость компонентов — каждый компонент может использоваться отдельно
  2. Единое ядро — все компоненты основаны на triangle/engine
  3. Гибкая конфигурация — система конфигурации позволяет настраивать каждый компонент отдельно
  4. Плагинная архитектура — легко расширяется через систему плагинов

Конфигурационные файлы

Конфигурационные файлы (с return)

Большинство файлов в папке config/ — это конфигурационные файлы, возвращающие массивы настроек:

<?php
// config/app.php
return [
    'debug' => true,
    'name' => 'My App',
];

// config/database.php
return [
    'default' => 'mysql',
    'connections' => [...],
];

// config/middleware.php
return [
    '' => [
        \App\Middleware\CorsMiddleware::class,
    ],
];

Эти файлы загружаются через Triangle\Engine\Config::load() и доступны через функцию config('key').

Исполняемые файлы (без return)

Исключение: config/route.php — это не конфигурационный файл, а выполняемый PHP-код:

<?php
// config/route.php

use Triangle\Router;

Router::get('/', [Controller::class, 'index']);
Router::post('/api/users', [ApiController::class, 'store']);

Этот файл подключается через require_once при инициализации Router и позволяет напрямую вызывать методы регистрации маршрутов.

Жизненный цикл приложения

1. Запуск сервера (Localzet Server)
   ↓
2. Инициализация Engine (Triangle\Engine\App)
   ↓
3. Загрузка конфигурации (Triangle\Engine\Config::loadAll())
   ↓
4. Автозагрузка компонентов (Triangle\Engine\Autoload)
   ↓
5. Bootstrap компонентов (Triangle\Engine\Bootstrap::start())
   ↓
6. Загрузка маршрутов (Router::collect() → require route.php)
   ↓
7. Обработка запросов через middleware
   ↓
8. Выполнение контроллеров или обработчиков
   ↓
9. Генерация ответа

Обработка запросов

HTTP-запросы (triangle/engine-http)

  1. Получение HTTP-запроса
  2. Поиск статического файла (если включено)
  3. Диспетчеризация маршрута через Router
  4. Применение middleware (глобальные → маршрутные → контроллерные)
  5. Выполнение обработчика маршрута
  6. Обработка ответа middleware (в обратном порядке)
  7. Отправка HTTP-ответа

Автоматическая маршрутизация

Triangle поддерживает автоматическую маршрутизацию на основе структуры контроллеров:

/app/controller/UserController::index  → GET /user/index
/app/controller/UserController::show   → GET /user/show

Автоматические маршруты можно отключить через аннотацию #[DisableDefaultRoute].

Преимущества архитектуры

  • Производительность — основан на Localzet Server, работает без PHP-FPM
  • Модульность — используйте только нужные компоненты
  • Расширяемость — легко добавлять плагины и компоненты
  • Масштабируемость — поддержка микросервисов и распределенных систем
  • Современный PHP — требует PHP 8.1+, использует современные возможности языка