سرفصل‌های آموزشی
آموزش معماری MVC
ساخت فایل composer.json

ساخت فایل composer.json

پروژه‌های پی‌اچ‌پی که در آن‌ها از پَکِیج مَنِجر کامپوزر استفاده می‌شود دارای فایلی تحت عنوان composer.json در روت پروژه هستند که این فایل حاوی دیتایی در قالب فرمت جیسون است که مشخص می‌سازد ابزار کامپوزر از چه تنظیماتی می‌باید تبعیت نماید. برای همین منظور، داخل پوشهٔ mvc فایلی با این نام حاوی دیتای زیر می‌سازیم:

{

}

همان‌طور که ملاحظه می‌شود، یک آرایهٔ خالی داخل این فایل ایجاد کرده‌ایم. حال در مسیر روت پروژه، کامند زیر را اجرا می‌کنیم:

/var/www/mvc$ composer dump-autoload -o

در صورتی که اجرای کامند فوق بدون هیچ‌گونه مشکلی تکمیل گردد،‌ خواهیم دید که در روت پروژه فولدر جدیدی تحت عنوان vendor ساخته خواهد شد که حاوی محتوای زیر است:

vendor
├── autoload.php
└── composer
    ├── autoload_classmap.php
    ├── autoload_namespaces.php
    ├── autoload_psr4.php
    ├── autoload_real.php
    ├── autoload_static.php
    ├── ClassLoader.php
    └── LICENSE

کاری که کامند dump-autoload انجام می‌دهد آن است که بر اساس قوانینی که داخل فایل composer.json تعریف کرده‌ایم (که در حال حاضر هیچ قانونی داخل این فایل تعریف نشده و صرفاً یک آرایهٔ خالی قرار داده‌ایم.) اقدام به آپدیت فایل autoload_classmap.php می‌کند و از آنجا که این اولین باری است که این کامند را اجرا می‌کنیم، کامپوزر ابتدا فایل‌ها و فولدرهای پیش‌نیاز من جمله فولدر vendor را ساخته سپس تَسک‌های مد نظر را عملی می‌سازد (در دفعات بعدی که این کامند اجرا گردد دیگر صرفاً فایل autoload_classmap.php به‌روزرسانی خواهد شد. همچنین لازم به یادآوری است که آپشن o- برگرفته از کلمهٔ Optimized است به منظور اجرای این کامند به شکلی بهینه است.) 

آنچه در این پوشه در حال حاضر برای‌مان حائز اهمیت می‌باشد فایلی به نام autoload.php است که این وظیفه را دارد تا به صورت خودکار کلیهٔ کلاس‌هایی که در جای‌جای این وب اپلیکیشن استفاده می‌نماییم را ایمپورت نماید.

پیش از این گفتیم که فایل index.php در پوشهٔ public به منزلهٔ نقطهٔ شروع برنامه خواهد بود. از همین روی،‌ نیاز است تا آن را به صورت زیر تکمیل نماییم تا از این پس هر کلاسی را که ساختیم و سپس استفاده نمودیم، به صورت خودکار ایمپورت گردد:

<?php
ini_set('display_errors', '1');
require_once __DIR__ . '/../vendor/autoload.php';

function dd($input)
{
    echo "<pre>";
    var_dump($input);
    echo "</pre>";
    die;
}

همان‌طور که ملاحظه می‌شود، ابتدا دستور require_once را نوشته سپس دستور __DIR__ را می‌نویسیم و پس از قرار دادن یک . مسیر فایل autoload.php را درج می‌نماییم.

    نکته

__DIR__ اصطلاحاً یک Magic Constant است که آدرس فایلی که مد نظر داریم را ریترن می‌کند.

در حقیقت، با استفاده از کانستَنت __DIR__ دستور داده‌ایم تا به منظور ایمپورت کردن فایل autoload.php ابتدا مسیر فایل index.php که در آدرس var/www/mvc/public/ قرار گرفته است مبنا قرار داده شده سپس با توجه به اینکه فایل autoload.php در فولدری خارج از public قرار دارد، با درج /.. از پوشهٔ فعلی که public باشد خارج شده سپس با نوشتن نام پوشهٔ vendor وارد آن شده و در نهایت با درج نام فایل autoload.php به آن دسترسی خواهیم داشت.

online-support-icon