PHPackages                             bault/baultphp - 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. bault/baultphp

ActiveProject[Framework](/categories/framework)

bault/baultphp
==============

A modern, modular PHP framework.

v2(1mo ago)010MITPHPPHP ^8.2CI failing

Since Aug 21Pushed 1mo agoCompare

[ Source](https://github.com/Truonghai2/BaultPHP)[ Packagist](https://packagist.org/packages/bault/baultphp)[ RSS](/packages/bault-baultphp/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (87)Versions (9)Used By (0)

BaultPHP: Framework PHP Hiện Đại &amp; Modular
==============================================

[](#baultphp-framework-php-hiện-đại--modular)

**BaultPHP** là một framework PHP được xây dựng từ đầu với triết lý thiết kế hướng đến hiệu năng cao, cấu trúc rõ ràng và khả năng mở rộng linh hoạt. Framework lấy cảm hứng từ các tư tưởng của **Domain-Driven Design (DDD)** và kiến trúc modular, giúp việc phát triển các ứng dụng phức tạp trở nên dễ dàng quản lý và bảo trì.

Triết lý cốt lõi
----------------

[](#triết-lý-cốt-lõi)

- **Modular là trên hết**: Mọi thứ trong BaultPHP đều có thể được tổ chức thành các **Module** độc lập. Mỗi module có cấu trúc thư mục riêng, service provider, routes, và migrations, cho phép các nhóm phát triển song song và tái sử dụng code hiệu quả.
- **Hiệu năng cao**: Framework được xây dựng trên nền tảng **Swoole**, một PHP extension cho phép lập trình bất đồng bộ, hiệu năng cao, giúp xử lý hàng ngàn kết nối đồng thời với độ trễ thấp.
- **Developer-friendly**: Cung cấp bộ công cụ dòng lệnh (CLI) mạnh mẽ để tự động hóa các tác vụ lặp đi lặp lại như tạo module, controller, use case, v.v., giúp lập trình viên tập trung vào logic nghiệp vụ.
- **Tự chủ và Tối giản**: Thay vì phụ thuộc vào các thư viện lớn, BaultPHP tự xây dựng các thành phần cốt lõi như ORM, Routing, và Authentication. Điều này mang lại sự kiểm soát tối đa và một codebase gọn nhẹ, dễ hiểu.

Các tính năng nổi bật
---------------------

[](#các-tính-năng-nổi-bật)

- **Kiến trúc Modular theo DDD**: Dễ dàng tạo và quản lý các module với cấu trúc chuẩn Domain-Driven Design thông qua câu lệnh `ddd:make-module`.
- **Hệ thống Routing linh hoạt**: Hỗ trợ cả **File-based Routing** (truyền thống) và **Attribute-based Routing** (hiện đại), tự động quét và đăng ký route từ các controller trong module.
- **Dependency Injection Container**: Một DI Container đơn giản nhưng mạnh mẽ để quản lý các dependency trong toàn bộ ứng dụng.
- **ORM tùy biến**: Một lớp ORM (Object-Relational Mapping) được xây dựng riêng, hỗ trợ các thao tác cơ bản với cơ sở dữ liệu, soft deletes, và query builder.
- **Hệ thống Migration mạnh mẽ**: Quản lý schema cơ sở dữ liệu cho từng module, hỗ trợ chạy, rollback theo từng batch.
- **Xác thực (Authentication) đa cơ chế**: Hỗ trợ nhiều "guard" khác nhau, bao gồm `SessionGuard` cho web truyền thống và `JwtGuard` cho các API stateless.
- **Tích hợp Swoole**: Sẵn sàng cho môi trường production hiệu năng cao với server được quản lý qua các lệnh `serve:start` (để chạy server) và `serve:watch` (để phát triển với hot-reload).
- **Bộ công cụ CLI tiện lợi**: Bao gồm các lệnh `route:cache`, `config:cache`, và rất nhiều lệnh `make:*`, `ddd:*` để tăng tốc phát triển.
- **Xử lý lỗi tập trung**: `ExceptionHandler` trung tâm với sự hỗ trợ của `Whoops` cho môi trường debug, giúp việc gỡ lỗi trở nên trực quan.

Kiến trúc tổng quan
-------------------

[](#kiến-trúc-tổng-quan)

### 1. Khởi động Server (Server Bootstrapping)

[](#1-khởi-động-server-server-bootstrapping)

1. Mọi request đều đi qua `public/index.php`, khởi tạo `Core\AppKernel`.
2. Một đối tượng `Core\Server\SwooleServer` được tạo ra.
3. Swoole server khởi tạo các **Worker Process**.
4. Trong mỗi Worker Process, một instance của `Core\Application` (DI Container) được khởi tạo và bootstrap **CHỈ MỘT LẦN**. Quá trình bootstrap này sẽ đăng ký và boot tất cả các **Service Provider**.
5. Worker process sau đó sẵn sàng nhận và xử lý nhiều request.

### 2. Luồng xử lý Request

[](#2-luồng-xử-lý-request)

1. Khi có một HTTP request đến, Swoole server chuyển nó đến một Worker Process đang rảnh.
2. Sự kiện `request` của `SwooleServer` được kích hoạt.
3. Request của Swoole được chuyển đổi thành một PSR-7 Request.
4. Request được xử lý bởi `Application->handle()` (thông qua `App\Http\Kernel`).
5. `Router` tìm kiếm route phù hợp, thực thi Controller, và nhận về một PSR-7 Response.
6. PSR-7 Response được chuyển đổi ngược lại thành Swoole Response và gửi về cho client.
7. Worker được dọn dẹp (reset các stateful service) và sẵn sàng cho request tiếp theo mà không cần khởi động lại framework.

Các thành phần chính
--------------------

[](#các-thành-phần-chính)

### Routing

[](#routing)

BaultPHP hỗ trợ 2 cách định nghĩa route:

**a. Attribute-based (Khuyến khích)**

Định nghĩa route trực tiếp trên phương thức của controller. Tự động được quét và đăng ký khi ứng dụng khởi động.

*File: `Modules/User/Http/Controllers/UserController.php`*

```
