📦 درس چهارم: مدیریت وابستگی با Composer؛ استاندارد جهانی PHP
🎯 هدف این درس: یادگیری کار با Composer به عنوان ابزار استاندارد مدیریت پکیج در PHP. آشنایی با مفاهیم Autoloading (PSR-4)، مدیریت نسخهها (Semantic Versioning) و نحوه ساخت و انتشار پکیجهای اختصاصی.
مهمان عزیز! 👋
تا قبل از ظهور Composer، نصب کتابخانههای خارجی در PHP کابوس بود! باید فایلها را دستی دانلود میکردی، در پوشهها کپی میکردی و نگران تداخل نام کلاسها بودی.
اما امروز، Composer قلب تپنده اکوسیستم مدرن PHP است. ابزاری که نه تنها نصب پکیجها را آسان میکند، بلکه با قابلیت Autoloading، نیاز به استفاده از دستورات قدیمی require و include را برای هر فایل کلاس از بین میبرد.
💡 چرا Composer حیاتی است؟
۱. مدیریت وابستگیها: نصب خودکار تمام پیشنیازهای یک پکیج.
۲. استاندارد PSR-4: بارگذاری خودکار کلاسها بر اساس نام و مسیر فایل.
۳. بهروزرسانی آسان: مدیریت نسخهها با یک دستور ساده.
1️⃣ نصب و راهاندازی اولیه
برای شروع، باید فایل composer.json را در ریشه پروژه خود ایجاد کنی. این فایل شناسنامه پروژه توست.
composer.json
JSON
1.0
{
"name": "rajestary/my-project",
"description": "A sample project for learning Composer",
"type": "project",
"require": {
"php": "^8.2"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
بعد از ایجاد فایل، دستور composer install را در ترمینال اجرا کن تا پوشه vendor ساخته شود.
2️⃣ نصب پکیجهای خارجی
فرض کن میخواهی از کتابخانه معروف monolog برای لاگگیری استفاده کنی. به جای دانلود دستی، فقط کافیست دستور زیر را بزنی:
Terminal
Bash
5.0
composer require monolog/monolog
3️⃣ جادوی Autoloading (PSR-4)
مهمترین بخش Composer، قابلیت Autoloading است. با تعریف_namespace_ در فایل json، دیگر نیازی به require 'classes/User.php' نداری.
index.php
PHP
8.x
<?php
// فقط یک بار این فایل را صدا میزنیم
require_once 'vendor/autoload.php';
// حالا میتوانیم از هر کلاسی در پوشه src استفاده کنیم
use App\Models\User;
$user = new User();
$user->setName('Younes');
4️⃣ مدیریت نسخهها (Semantic Versioning)
در فایل composer.json، نمادهایی مثل ^ یا ~ را میبینی:
"php": "^8.2": یعنی نسخه ۸.۲ یا بالاتر (تا قبل از ۹.۰)."monolog/monolog": "~2.0": یعنی آخرین نسخه از سری ۲.
⚠️ نکته مهم:
فایل composer.lock را هرگز حذف نکن و آن را در Git کامیت کن. این فایل تضمین میکند که همه اعضای تیم دقیقاً از همان نسخههایی استفاده کنند که تو تست کردهای.
❌ خطاهای رایج در Composer
- فراموش کردن dump-autoload: اگر namespace جدیدی اضافه کردی و کار نکرد، دستور
composer dump-autoloadرا اجرا کن. - تغییر دستی پوشه vendor: هرگز فایلهای داخل پوشه vendor را دستی تغییر نده. همیشه از طریق composer اقدام کن.
🏁 جمعبندی درس چهارم
مهمان عزیز، در این درس یاد گرفتی:
- ✅ نحوه ایجاد و پیکربندی فایل composer.json.
- ✅ نصب و بهروزرسانی پکیجهای خارجی.
- ✅ پیادهسازی استاندارد Autoloading PSR-4.
- ✅ اهمیت فایل lock و مدیریت نسخهها.
🎓 تمرین عملی درس چهارم
یک پروژه جدید بساز، پکیج vlucas/phpdotenv را نصب کن و سعی کن متغیرهای محیطی (.env) را در پروژهات لود کنی.
🗺️ نقشه راه دوره: شما اینجا هستید!
برای اینکه بدانی دقیقاً کجای مسیر هستی و چه درسهایی در انتظار توست، به جدول زیر نگاه کن. درس فعلی با رنگ متفاوت مشخص شده است.
| درس | عنوان درس | آنچه یاد میگیرید |
|---|---|---|
| ۱ | اصول SOLID در PHP | تکمسئولیتی، باز/بسته، جایگزینی لیسکوف، جداسازی رابط، وارونگی وابستگی |
| ۲ | الگوهای طراحی (Design Patterns) | Singleton, Factory, Strategy, Observer, MVC پیشرفته |
| ۳ | برنامهنویسی تابعی در PHP | توابع ناشناس (Closures)، Arrow Functions، Map/Filter/Reduce |
| ۴ | مدیریت وابستگی با Composer | نصب پکیجها، مدیریت نسخهها، Autoloading (PSR-4) |
| ۵ | تستنویسی حرفهای (TDD) | آشنایی با PHPUnit، نوشتن Unit Test، Mocking |
| ۶ | کار با Redis و Caching | کش کردن دادهها، Session Handler با Redis |
| ۷ | پردازشهای پسزمینه (Queue & Jobs) | استفاده از صفها برای ایمیلزنی یا پردازش سنگین |
| ۸ | API نویسی حرفهای (RESTful) | استانداردهای REST، احراز هویت با JWT، Rate Limiting |
| ۹ | امنیت سایبری پیشرفته | تحلیل حملات پیچیده، Secure Headers، CSP |
| ۱۰ | پروژه نهایی پیشرفته | ساخت یک CMS ماژولار با قابلیت نصب پلاگین و تم |



