پروژههای پیاچپی که در آنها از پَکِیج مَنِجر کامپوزر استفاده میشود دارای فایلی تحت عنوان 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
به آن دسترسی خواهیم داشت.