Bỏ qua để đến nội dung

Các phương pháp hay nhất về tổ chức mã

Thực tiễn tốt nhất về tổ chức mã trong XOOPS

Phần tiêu đề “Thực tiễn tốt nhất về tổ chức mã trong XOOPS”

Việc tổ chức mã phù hợp là điều cần thiết để có khả năng bảo trì, khả năng mở rộng và cộng tác nhóm.

Mô-đun XOOPS được tổ chức tốt phải tuân theo cấu trúc sau:

mymodule/
├── xoops_version.php # Module metadata
├── index.php # Frontend entry point
├── admin.php # Admin entry point
├── class/
│ ├── Controller/ # Request handlers
│ ├── Handler/ # Data handlers
│ ├── Repository/ # Data access
│ ├── Entity/ # Domain objects
│ ├── Service/ # Business logic
│ ├── DTO/ # Data transfer objects
│ └── Exception/ # Custom exceptions
├── templates/ # Smarty templates
│ ├── admin/ # Admin templates
│ └── blocks/ # Block templates
├── assets/
│ ├── css/ # Stylesheets
│ ├── js/ # JavaScript
│ └── images/ # Images
├── sql/ # Database schemas
├── tests/ # Unit and integration tests
├── docs/ # Documentation
└── composer.json # Composer configuration
Classes: PascalCase (UserController, PostRepository)
Methods: camelCase (getUserById, createUser)
Properties: camelCase ($userId, $username)
Constants: UPPER_SNAKE_CASE (DEFAULT_LIMIT, MAX_USERS)
Functions: snake_case (get_user_data, validate_email)
Files: PascalCase.php (UserController.php)
  • Một class cho mỗi tệp
  • Tên file trùng với tên class
  • Cấu trúc thư mục phù hợp với hệ thống phân cấp không gian tên
  • Giữ classes có liên quan cùng nhau
  • Sử dụng cách đặt tên nhất quán trên toàn mô-đun
{
"autoload": {
"psr-4": {
"Xoops\\Module\\Mymodule\\": "class/"
}
}
}
<?php
class Autoloader
{
public static function register()
{
spl_autoload_register([self::class, 'autoload']);
}
public static function autoload($class)
{
$prefix = 'Xoops\\Module\\Mymodule\\';
if (strpos($class, $prefix) !== 0) {
return;
}
$relative = substr($class, strlen($prefix));
$file = __DIR__ . '/' .
str_replace('\\', '/', $relative) . '.php';
if (file_exists($file)) {
require $file;
}
}
}
?>
  • Mỗi class đều có một lý do để thay đổi
  • Tách các mối quan tâm thành classes khác nhau
  • Giữ classes tập trung và gắn kết
  • Sử dụng tên có ý nghĩa, mang tính mô tả
  • Thực hiện theo tiêu chuẩn mã hóa PSR-12
  • Tránh viết tắt trừ khi rõ ràng
  • Sử dụng các mẫu nhất quán
  • Nhóm liên quan classes với nhau
  • Tách các mối quan tâm thành các thư mục con
  • Giữ templates và assets ngăn nắp
  • Sử dụng cách đặt tên file nhất quán
  • Sử dụng không gian tên thích hợp cho tất cả classes
  • Theo dõi tự động tải PSR-4
  • Không gian tên phù hợp với cấu trúc thư mục
  • Tập trung cấu hình vào thư mục config
  • Sử dụng cấu hình dựa trên môi trường
  • Không cài đặt mã hóa cứng
<?php
class Bootstrap
{
private static $serviceContainer;
private static $initialized = false;
public static function initialize()
{
if (self::$initialized) {
return;
}
global $xoopsDB;
self::$serviceContainer = new ServiceContainer($xoopsDB);
self::$initialized = true;
}
public static function getServiceContainer()
{
if (!self::$initialized) {
self::initialize();
}
return self::$serviceContainer;
}
}
?>

Xem thêm:

  • Xử lý lỗi để quản lý ngoại lệ
  • Kiểm tra tổ chức kiểm tra
  • ../Patterns/MVC-Pattern cho cấu trúc bộ điều khiển

Tags: #các phương pháp thực hành tốt nhất #tổ chức mã #psr-4 #phát triển mô-đun