برنامه نویسی

PHP PSRS: PSR-4 AutoLoader

در PSR-4 (توصیه استانداردهای PHP شماره 4) یک استاندارد autoloading است که توسط PHP-FIG (گروه قابلیت تعامل فریم ورک PHP) تعریف شده است تا چگونگی بارگیری کلاس ها ، رابط ها و صفات را به طور خودکار در برنامه های PHP بارگیری کند. این نیاز به کتابچه راهنما را از بین می برد require یا include اظهارات با تکیه بر فضای نام و نقشه برداری ساختار دایرکتوری.

مفاهیم کلیدی در AutoLoading PSR-4

نقشه برداری فضای نام به مستقیم

PSR-4 مشخص می کند که فضای نام یک کلاس باید مستقیماً به یک مسیر دایرکتوری در ساختار پروژه نقشه برداری کند.

  • در پیشوند فضای نام مطابق با a فهرست پایهبشر
  • در جداکننده فضای نام (\) مطابق با a جدا کننده دایرکتوری (/).
  • در نام کلاس کاملاً واجد شرایط (FQCN) با مسیر پرونده با .php پسوند

فهرست پایه

شما یک “دایرکتوری پایه” را تعریف می کنید که PSR-4 انتظار دارد پرونده های کلاس خود را پیدا کند. این نقشه برداری به طور معمول در پیکربندی شده است composer.jsonبشر

مثال اساسی PSR-4

ساختار پروژه:

project-root/
  └── src/
      └── App/
          └── Controllers/
              └── HomeController.php
          └── Models/
              └── User.php
  └── vendor/
  └── composer.json
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

فضای نام و کلاس:

  • App\Controllers\HomeController → باید نقشه به project-root/src/App/Controllers/HomeController.phpبشر
  • App\Models\User → باید نقشه به project-root/src/App/Models/User.phpبشر

تعاریف کلاس:

// HomeController.php
namespace App\Controllers;

class HomeController {
    public function index() {
        echo "Home Controller - Index Method";
    }
}

// User.php
namespace App\Models;

class User {
    public function getName() {
        return "John Doe";
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Composer.json پیکربندی برای PSR-4

برای فعال کردن AutoLoading ، باید پیکربندی کنید composer.json:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/App/"
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پس از پیکربندی ، اجرا:

composer dump-autoload
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این دستور پرونده های لازم را برای AutoLoading PSR-4 ایجاد می کند.

با استفاده از کلاس ها:

با استفاده از AutoLoading PSR-4 ، می توانید از کلاس ها استفاده کنید بدون اینکه به صورت دستی پرونده ها را شامل شود:

require 'vendor/autoload.php';  // Autoloader generated by Composer

use App\Controllers\HomeController;
use App\Models\User;

$controller = new HomeController();
$controller->index();  // Output: Home Controller - Index Method

$user = new User();
echo $user->getName();  // Output: John Doe
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پیشوندهای فضای نام چند

بعضی اوقات ، ممکن است بخواهید پیشوندهای مختلف فضای نام را برای دایرکتوری های مختلف نقشه برداری کنید:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/App/",
            "Utils\\": "src/Utils/"
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اکنون ، می توانید کلاس ها را در زیر نام های جداگانه سازماندهی کنید:

  • App\Controllers\HomeController → نقشه ها به src/App/Controllers/HomeController.phpبشر
  • Utils\StringHelper → نقشه ها به src/Utils/StringHelper.phpبشر

مزایای AutoLoading PSR-4

  1. هیچ دستی شامل نمی شود: بارگیری کلاس را ساده می کند.
  2. سازمان بهبود یافته: ساختارهای پروژه سازمان یافته و سازگار را ترویج می کند.
  3. قابلیت همکاری: به طور گسترده توسط چارچوب ها (مانند لاراول ، سیمفونی) و کتابخانه ها پشتیبانی می شود.
  4. مقیاس پذیری: به راحتی پروژه های بزرگ را با چندین نام و دایرکتوری های مختلف اداره کنید.

PSR-4 یک استاندارد تمیز و مدرن را برای کلاسهای خودکار سازی با استفاده از مکانهای نام ، کاهش دیگ بخار و بهبود قابلیت حفظ تعریف می کند. با پیکربندی ساده composer.json و به دنبال کنوانسیون های دایرکتوری ، می توانید بدون نگرانی در مورد پرونده دستی ، استفاده از کلاس را در برنامه های PHP ساده کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا