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