رفتن به محتوا

بهترین شیوه های سازمان کد

بهترین شیوه های سازماندهی کد در XOOPS

Section titled “بهترین شیوه های سازماندهی کد در XOOPS”

سازماندهی کد مناسب برای نگهداری، مقیاس پذیری و همکاری تیمی ضروری است.

ساختار دایرکتوری ماژول

Section titled “ساختار دایرکتوری ماژول”

یک ماژول XOOPS به خوبی سازماندهی شده باید از این ساختار پیروی کند:

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

استانداردهای نامگذاری PHP (PSR-12)

Section titled “استانداردهای نامگذاری PHP (PSR-12)”
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)

سازماندهی فایل و دایرکتوری

Section titled “سازماندهی فایل و دایرکتوری”
  • یک کلاس در هر فایل
  • نام فایل با نام کلاس مطابقت دارد
  • ساختار دایرکتوری با سلسله مراتب فضای نام مطابقت دارد
  • کلاس های مرتبط را با هم نگه دارید
  • از نامگذاری ثابت در سراسر ماژول استفاده کنید
{
"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;
}
}
}
?>
  • هر کلاس باید یک دلیل برای تغییر داشته باشد
  • نگرانی ها را به طبقات مختلف تفکیک کنید
  • کلاس ها را متمرکز و منسجم نگه دارید
  • از اسامی معنی دار و توصیفی استفاده کنید
  • استانداردهای کدگذاری PSR-12 را دنبال کنید
  • از اختصارات بپرهیزید مگر اینکه واضح باشد
  • از الگوهای ثابت استفاده کنید
  • کلاس های مرتبط را با هم گروه کنید
  • نگرانی ها را به زیر شاخه ها تفکیک کنید
  • الگوها و دارایی ها را سازماندهی کنید
  • از نامگذاری ثابت فایل استفاده کنید
  • از فضاهای نام مناسب برای همه کلاس ها استفاده کنید
  • بارگذاری خودکار PSR-4 را دنبال کنید
  • فضای نام با ساختار دایرکتوری مطابقت دارد
  • پیکربندی را در دایرکتوری پیکربندی متمرکز کنید
  • از پیکربندی مبتنی بر محیط استفاده کنید
  • تنظیمات هاردکد نکنید
<?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;
}
}
?>

همچنین ببینید:

  • Error-Handling برای مدیریت استثنا
  • تست برای سازمان آزمون
  • ../Patterns/MVC-Pattern برای ساختار کنترلر

برچسب‌ها: #بهترین روشها #سازمان کد #psr-4 #توسعه ماژول