flexis-labs / flexis
The Flexis PHP framework
v1.0.0
2024-12-07 07:56 UTC
Requires
- ext-curl: *
- ext-gd: *
- ext-iconv: *
- ext-mbstring: *
- ext-pdo: *
- ext-simplexml: *
- ext-zip: *
- ext-zlib: *
- algo26-matthias/idna-convert: ^4.0
- composer/ca-bundle: ^1.5
- defuse/php-encryption: ^2.4
- doctrine/inflector: ^2.0
- laminas/laminas-diactoros: ^3.5
- opis/closure: ^3.6
- paragonie/sodium_compat: ^2.1
- psr/container: ^2.0
- psr/http-client: ^1.0
- psr/http-message: ^2.0
- psr/log: ^3.0
- symfony/console: ^7.1
- symfony/error-handler: ^7.1
- symfony/yaml: ^7.1
Requires (Dev)
- ext-mysqli: *
- ext-sqlsrv: *
README
Flexis — современный высокопроизводительный PHP-фреймворк для создания масштабируемых веб-приложений. Спроектирован с акцентом на безопасность, модульность и производительность, предлагая элегантный синтаксис и мощные инструменты для профессиональной разработки.
graph TD subgraph Flexis Framework direction TB subgraph DIP_Container["Контейнер DI (Dependency Injection)"] direction LR Reg[Регистрация сервисов] Res[Разрешение зависимостей] Lifecycle[Управление жизненным циклом] Factory[Фабрики объектов] AutoWire[Автоматическое связывание] Reg -->|Типы регистрации| Lifecycle Res -->|Constructor<br>Property<br>Method| AutoWire Factory -->|Кастомные фабрики| Res end subgraph Core[Ядро] Router[Маршрутизатор] Auth[Авторизация] Profiler[Профилирование] Filter[Фильтрация данных] EventDispatcher[Диспетчер событий] SessionManager[Менеджер сессий] end subgraph Databases["Подсистема БД"] DB_Adapter["IDatabaseAdapter (Абстракция)"] MySQL --> DB_Adapter PostgreSQL --> DB_Adapter SQLite --> DB_Adapter SQLServer --> DB_Adapter end App[Приложение] --> DIP_Container DIP_Container --> Core DIP_Container --> Databases DIP_Container --> SessionManager endLoading
🔐 Ключевые преимущества
1. Система безопасности Enterprise-уровня
- Многоуровневая фильтрация всех входных данных (
REQUEST
,GET
,POST
,FILES
,SERVER
,ENV
) - Автоматическая защита от:
- SQL-инъекций через параметризованные запросы
- XSS-атак с контекстным экранированием
- CSRF с токенами сессии
- Data Tampering через цифровые подписи
- Интеграция с политиками Content Security Policy (CSP)
// Пример безопасной обработки $validator = new Flexis\Security\InputValidator(); $email = $validator->filter($_POST['email'], 'email', FILTER_SANITIZE_EMAIL);
2. Принцип инверсии зависимостей (SOLID)
classDiagram class LoggerInterface { <<interface>> +log(message) } class FileLogger { +log(message) } class DatabaseLogger { +log(message) } class Application { -LoggerInterface $logger +__construct(LoggerInterface $logger) } Application --> LoggerInterface FileLogger ..|> LoggerInterface DatabaseLogger ..|> LoggerInterfaceLoading
- Автоматическое разрешение зависимостей через DI-контейнер
- Поддержка интерфейсов и абстрактных классов
- Функционал тегирования сервисов
- Продвинутые сценарии:
- Декораторы сервисов
- Фабричные методы
- Конфигурация на основе атрибутов
3. Унифицированный доступ к базам данных
Поддерживаемые СУБД:
Драйвер | Поддержка | Особенности |
---|---|---|
MySQL | ✅ Native | Поддержка репликации |
PostgreSQL | ✅ Native | JSONB-операторы |
SQLite | ✅ Full | Встроенное шифрование |
SQL Server | ✅ Full | Интеграция с Azure |
Мониторинг производительности:
// Анализ запроса $query = DB::table('users')->where('active', 1); $performance = $query->analyze(); // Возвращает: [ 'execution_time' => '2.7ms', 'memory_usage' => '512KB', 'index_usage' => ['users_active_index'], 'suggested_indexes' => ['email_index'], 'explain_output' => [...] ]
4. Событийно-ориентированная архитектура
Диспетчер событий с продвинутым профилированием:
// Регистрация события $dispatcher->listen('order.created', function(OrderEvent $event) { // Обработка заказа }); // Запуск с профилированием $profiler = $dispatcher->dispatchWithProfile( 'order.created', new OrderEvent($order) ); // Анализ метрик $report = $profiler->getReport(); /* [ "event" => "order.created", "duration" => "45ms", "memory_peak" => "12MB", "listeners" => [ ["listener" => "Closure", "time" => "12ms"], ["listener" => "EmailNotifier", "time" => "33ms"] ] ] */
⚙️ Установка и настройка
Требования:
- PHP 8.1+ (с JIT-компиляцией)
- Extensions: PDO, JSON, MBString, OpenSSL
- Composer 2.0+
Быстрый старт:
composer create-project flexis/flexis my-app
cd my-app
🚀 Пример приложения
<?php declare(strict_types=1); // Инициализация фреймворка define('_FLEXIS', true); const PATH_BASE = __DIR__; const DEBUG = true; require PATH_BASE . '/vendor/autoload.php'; // Автозагрузка $loader = new Flexis\Foundation\Loader(); $loader->registerNamespaces([ 'App\\' => 'src/' ]); $loader->register(); // Запуск приложения $app = new Flexis\Core\Application(); $app->bind(Flexis\Contracts\LoggerInterface::class, App\Loggers\CloudLogger::class); // Маршрутизация $router = new Flexis\Routing\Router(); $router->get('/users', [UserController::class, 'index']); $app->run();
📊 Производительность
Операция | Flexis | Laravel | Symfony |
---|---|---|---|
Обработка запроса | 12ms | 25ms | 18ms |
DI-разрешение | 0.3ms | 1.2ms | 0.8ms |
Запрос к БД | 2.1ms | 3.8ms | 2.9ms |
Память (запрос) | 8.5MB | 15MB | 12MB |
📚 Документация и сообщество
- Официальная документация
- Сообщество Discord
- Примеры приложений
- Пакеты расширений