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
- هیچ دستی شامل نمی شود: بارگیری کلاس را ساده می کند.
- سازمان بهبود یافته: ساختارهای پروژه سازمان یافته و سازگار را ترویج می کند.
- قابلیت همکاری: به طور گسترده توسط چارچوب ها (مانند لاراول ، سیمفونی) و کتابخانه ها پشتیبانی می شود.
- مقیاس پذیری: به راحتی پروژه های بزرگ را با چندین نام و دایرکتوری های مختلف اداره کنید.
PSR-4 یک استاندارد تمیز و مدرن را برای کلاسهای خودکار سازی با استفاده از مکانهای نام ، کاهش دیگ بخار و بهبود قابلیت حفظ تعریف می کند. با پیکربندی ساده composer.json
و به دنبال کنوانسیون های دایرکتوری ، می توانید بدون نگرانی در مورد پرونده دستی ، استفاده از کلاس را در برنامه های PHP ساده کنید.