Hướng dẫn cấu trúc và triển khai dự án PHP Service Bus

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_once nạp trình tải tự động của Composer để quản lý các namespace.
  • Application là 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.

Thẻ: php service-bus event-driven message-bus backend-architecture

Đăng vào ngày 14 tháng 7 lúc 04:47