Tổng quan cấu trúc thư mục dự án
Dưới đây là sơ đồ tổ chức mã nguồn của một dự án PHP Service Bus tiêu chuẩn. Việc nắm vững cấu trúc này giúp các nhà phát triển dễ dàng mở rộng và bảo trì hệ thống:
php-service-bus/
├── bin/
│ └── console
├── config/
│ ├── app_config.yaml
│ └── db_params.yaml
├── src/
│ ├── Components/
│ ├── Container/
│ ├── EventBus/
│ ├── MessageBus/
│ ├── ServiceBus/
│ └── index.php
├── tests/
│ └── ...
├── .gitignore
├── composer.json
├── composer.lock
├── LICENSE
└── README.md
- bin/: Chứa các tệp thực thi từ giao diện dòng lệnh (CLI).
- config/: Lưu trữ các tệp cấu hình hệ thống và tham số môi trường.
- src/: Thư mục lõi chứa mã nguồn xử lý logic chính, được phân tách thành các module như MessageBus, EventBus và Container.
- tests/: Chứa các kịch bản kiểm thử (Unit test, Integration test).
- composer.json: Quản lý các thư viện phụ thuộc và định nghĩa cơ chế autoloading.
Cơ chế khởi chạy ứng dụng
Tệp tin bin/console đóng vai trò là điểm đầu vào (entry point) cho các tác vụ CLI. Nó chịu trách nhiệm thiết lập môi trường và khởi động vòng đời của ứng dụng.
#!/usr/bin/env php
<?php
declare(strict_types=1);
require_once dirname(__DIR__) . '/vendor/autoload.php';
use ServiceBus\Application;
// Khởi tạo thực thể ứng dụng Service Bus
$serviceBusApp = new Application();
// Thực thi ứng dụng
$serviceBusApp->run();
Trong đoạn mã trên:
- Dòng
require_oncenạp trình tải tự động của Composer để quản lý các namespace. Applicationlà lớp trung tâm điều phối các hoạt động của Service Bus.- Phương thức
run()kích hoạt quá trình xử lý các lệnh hoặc thông điệp đầu vào.
Hệ thống cấu hình YAML
Dự án sử dụng định dạng YAML để quản lý các thiết lập một cách linh hoạt. Các tệp cấu hình thường được chia nhỏ theo mục đích sử dụng.
Tệp cấu hình chung (app_config.yaml)
Tệp này định nghĩa các thông tin cơ bản về ứng dụng và danh sách các dịch vụ được kích hoạt.
settings:
project_name: 'Enterprise Service Bus'
version: '1.2.0'
core_services:
- ServiceBus\MessageBus
- ServiceBus\EventBus
- ServiceBus\Logger
Thông số kết nối hạ tầng (db_params.yaml)
Dùng để lưu trữ các thông tin nhạy cảm hoặc thay đổi theo môi trường như cơ sở dữ liệu.
database_connection:
driver: 'pdo_mysql'
host: '127.0.0.1'
port: 3306
dbname: 'bus_registry'
user: 'db_admin'
password: 'secure_password'
Hệ thống sẽ nạp các tham số này vào Container để tiêm (inject) vào các dịch vụ tương ứng khi cần thiết, giúp tách biệt hoàn toàn giữa mã nguồn logic và dữ liệu cấu hình.