ساخت فایل composer.json
این مقاله ،به ادامه مقاله ی قبلی ، که composer را معرفی می کرد ، پرداخته است.
پروژههای php که در آنها از پَکِیج مَنِجر کامپوزر استفاده میشود ، دارای فایلی به نام 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.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__ دستور دادهایم تا به منظور ایمپورت کردن فایل autoload.php ابتدا مسیر فایل index.php که در آدرس var/www/mvc/public/ قرار دارد مبنا قرار داده شده سپس با توجه به اینکه فایل autoload.php در فولدری خارج از public قرار دارد، با درج /.. از پوشهٔ فعلی که public باشد خارج شده سپس با نوشتن نام پوشهٔ vendor وارد آن شده و در نهایت با درج نام فایل autoload.php به آن دسترسی خواهیم داشت.


