سلام ، میخواستم بدونم آیا توی autoloader به صورت خودکار متوجه میشن که ساختار namespace ما با فولدربندی یکیه؟
سلام و احترام
شما طیق namespaceی که میدید مشخص میشه که دقیقا پوشه های شما با چه اسمی هستند و چه جورین
برای مثال namespace زیر:
namespace App\Http\Controllers\Admin\KYC;
کلاس داخل همچین فولدی هست:
- app
- Http
- Controllers
- Admin
- KYC
. Class.php
توی قرار دادن namespace شما اسمی از کلاس نمیارید و فقط از پوشه پدر شروع میکنید به نام گذاری تا به کلاس برسید.
توجه داشته باشید که توی composer.json کانفیگ autoloading به این صورت هستش:
"autoload": {
"psr-4": {
"App\\": "app/",
}
},
توی کانفیگ بالا گفتیم که اول هر namespaceی کلمه App بود ینی اینکه داره به پوشه app اشاره میکنه
یه مثال دیگه هم ببینم:
namespace زیر:
namespace App\Exceptions;
داره به این پوشه اشاره میکنه:
- app
- Exceptions
حالا اگه بخوایم از کلاس داخل اون دایرکتوری استفاده کنیم کافیه اسم کلاس رو هم موقع use کردن به نام namespace اضافه کنیم:
use App\Exceptions\Handler;
Handler در بالا نام کلاس است.
باز اگه سوالی بود بپرسید من در خدمتم، موفق باشید