به نام خدا سلام دوستان عزیزم امیدوارم حالتون خوب باشه. امروز میخوام اموزش لود کردن فایل ها با کامپوزر در خدمتتون باشم. چیزی ک همین امروز بهش برخوردم و بنظرم بد نیست حداقل برای یاد اوری یه جا ثبت بشه و شاید بدرد یه بنده خدایی بخوره :)
خب حالا استراکچر کار ما چطوریه؟
-root -src Foo.php Bar.php composer.json composer.lock -vendor autoload.php index.php
اول از همه کامپوزر رو نصب کنین (این یکی چون واقعا کاری نداره توضیحش رو میسپاریم به گوگل)
بگذریم بریم سراغ توضیح دادن روش ها
1_روش اول | استفاده از استاندارد Psr-4
یک گروه از برنامه نویسان php یکسری استاندارد هایی برای بهتر کد نویسی در زبان php ابداع کردند که میتونین با استفاده از این لینک میتونین ببینین
یکی از این ها همین استاندارد psr-4 هست. روش کار این استاندارد چیه؟ شما میاین داخل پروژتون با استفاده از فایل کامپوزر به این شکل فضاهای نام و فولدر های کلاس هاتون رو قرار میدین و میگین این ها خودکار لود بشه
به این شکل
like this { "autoload":{ "psr-4" : { "Acme\\" : "src/" } } }
خیلی خب حالا کد بالا یعنی چی؟ اول اینکه این باید توی فایل composer.json قرار داده بشه
و بعد اینکه اگر این سینتکس براتون نا اشناس بنظرم برید یه مقدار با json اشنا بشین (لینک w3schools)
خیلی خب اون بالاتر یه autoload میبینیم ک اشاره میکنه به اینکه قراره لود کامپوزر داخل این بخش انجام بشه. یه شی ساخته شده و داخلش psr-4 هست که اشاره میکنه به استاندارد لود کردن فایل ها توسط ما
و باز هم داخلش داره یه اتفاقایی میوفته
و حالا اصل کار:
this "Acme\\" : "src/"
تقریبا این اصل کار هست. بخش اول این تیکه کد داره به namespace کلاس ها اشاره میکنه. بخش دوم داره به فولدری که اینها داخلش قرار داره اشاره میکنه و این یعنی چی؟
این یعنی برو داخل فولدر src و کلاس هایی ک namespace به نام Acme دارن رو فراخوانی کن
آسون بود نه؟
محتویات فایل Foo.php به این شکل هست
Foo.php <?php namespace Acme; class Foo{ public function getStarted(){ echo "Foo class" } }
حالا فایل index.php برای تست این ها ادیت میکنم. محتوای این فایل به این شکل باید باشه
index.php <?php require("vendor/autoload.php"); use Acme\Foo; $foo = new Foo; $foo->getStarted();
داخل این فایل چی گفتم؟ اول گفتم شما فایل autoload.php رو از پوشه vendor فراخوانی کن و بعد از کلاس Foo استفاده (use) کن
سپس یه شی از Foo بساز و از اون شی متود getStarted رو صدا بزن
الان شما باید عبارت Foo class رو داخل صفحه ببینین
به همین راحتی :) به همین خوشمزگی. این روش اول بود که باهم دیدیم چجوریه. روش های اسون تری هم برای فایل های بدون namespace هست که در جلسه بعدی درموردش حرف میزنیم. این پست بعدا اپدیت میشه
ضمنا میتونین از مطالب دیگر هم استفاده کنین
https://virgool.io/laravel-community/%D8%A7%D9%85%D9%88%D8%B2%D8%B4-%D9%88%D8%A7%D8%B1%D8%AF-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%81%DB%8C%DA%A9-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-sthmvifargo1
خیلی مخلصیم :)