این مقاله ،به ادامه مقاله ی قبلی ، که 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
به آن دسترسی خواهیم داشت.