PHPackages                             arseniy985/phuip - 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. arseniy985/phuip

ActiveLibrary[Framework](/categories/framework)

arseniy985/phuip
================

PHP фреймворк, взял самое лучшее из доступного, сделал простые не сильно нагруженные реализации разных механизмов и добавил свои фишки. Получился фреймворк, который намного быстрее своих аналогов.

50PHP

Since Nov 8Pushed 1y ago1 watchersCompare

[ Source](https://github.com/arseniy985/pHUIp-framework)[ Packagist](https://packagist.org/packages/arseniy985/phuip)[ RSS](/packages/arseniy985-phuip/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (4)Used By (0)

pHUIp Framework
===============

[](#phuip-framework)

Легкий и быстрый PHP фреймворк с современной архитектурой и простым API. Разработан для создания эффективных веб-приложений с минимальными накладными расходами.

Особенности
-----------

[](#особенности)

- 🚀 **Высокая производительность**: Оптимизированная маршрутизация и обработка запросов
- 💉 **Dependency Injection**: Встроенный контейнер внедрения зависимостей (Auryn)
- 🎨 **Шаблонизация**: Безопасный и эффективный движок шаблонов
- 🗃️ **ORM**: Интеграция с Eloquent ORM
- 🛡️ **Middleware**: Гибкая система промежуточного ПО
- 🎯 **Простота использования**: Интуитивно понятный API и минимальная конфигурация
- 📦 **Группы маршрутов**: Поддержка вложенных групп с префиксами
- 🔒 **Безопасность**: Встроенная защита и безопасная обработка данных

Требования
----------

[](#требования)

- PHP 8.0 или выше
- Composer
- MySQL/PostgreSQL (для работы с базой данных)
- Apache с mod\_rewrite (или nginx с аналогичной конфигурацией)

Установка
---------

[](#установка)

```
# Через Composer
composer require arseniy985/phuip

# Или клонирование репозитория
git clone https://github.com/arseniy985/pHUIp-framework/
cd pHUIp-framework
composer install
```

Быстрый старт
-------------

[](#быстрый-старт)

1. Настройте `.htaccess`:

```

    RewriteEngine On
    RewriteBase /
    RewriteRule ^.*$ index.php [L]

```

2. Создайте `.env` файл:

```
DB_DRIVER=mysql
DB_HOST=localhost
DB_NAME=your_database
DB_USER=your_username
DB_PASSWORD=your_password
```

3. Создайте базовый маршрут в `router/router.php`:

```
Route::get("/", function () {
    PageGenerator::render("home", ["title" => "Welcome!"]);
});
```

Архитектура
-----------

[](#архитектура)

### Маршрутизация

[](#маршрутизация)

Поддерживаются все основные HTTP методы и группы маршрутов:

```
// Базовые маршруты
Route::get("/", [HomeController::class, "index"]);
Route::post("/users", [UserController::class, "create"]);

// Динамические маршруты с параметрами
Route::get("/users/{id}", [UserController::class, "show"]);
Route::get("/posts/{categoryId}/comments/{commentId}", [PostController::class, "showComment"]);

// Получение параметров в контроллере
class UserController
{
    public function show(Request $request): void
    {
        // Получение одного параметра
        $userId = $request->param('id');

        // Получение всех параметров маршрута
        $params = $request->params();

        // Работа с данными
        $user = $this->userRepository->find($userId);
        PageGenerator::render('user', ['user' => $user]);
    }
}

// Группы маршрутов с префиксом
Route::group('/admin', function(RouteGroup $group) {
    $group->get('/dashboard', [AdminController::class, 'index']);

    // Динамические маршруты в группах
    $group->get('/users/{id}', [AdminController::class, 'showUser']);

    // Вложенные группы
    $group->group('/settings', function(RouteGroup $settings) {
        $settings->get('/general', [SettingsController::class, 'general']);
        $settings->get('/security', [SettingsController::class, 'security']);
    });
})->middleware(AdminAuthMiddleware::class);
```

### Middleware

[](#middleware)

Middleware определяются как классы с методом `handle`:

```
namespace http\Middlewares;

use app\http\Middleware;class AuthMiddleware extends Middleware
{
    public function handle(AuthService $auth): bool
    {
        return $auth->check();
    }
}

// Использование в маршрутах
Route::get('/profile', [UserController::class, 'show'])
    ->middleware(AuthMiddleware::class);
```

### Контроллеры

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

Контроллеры размещаются в `http/Controllers` и поддерживают автоматическое внедрение зависимостей:

```
namespace http\Controllers;

class UserController
{
    public function show(Request $request): void
    {
        $user = User::find($request->param('id'));
        PageGenerator::render('user', ['user' => $user]);
    }
}
```

### Dependency container

[](#dependency-container)

Регистрация зависимостей производится в `http/provider.php`:

```
