لاراول هم مثل اکثر فریمورکهای بزرگ یه دایرکتوری برای فایلهای کانفیگش داره، پوشهی config که در دایرکتوری روت هست رو برای اینکار در نظر گرفتند که پر از فایلهای کانفیگه. ما هم به عنوان توسعهدهندهی لاراول این توانایی رو داریم که یکه فایل کانفیگ لاراول مورد نظر خودمون رو ایجاد کنیم و از اون استفاده کنیم. وقتی هم که بخوایم یه پکیج برای لاراول بنویسیم به احتمال زیاد نیاز داریم که فایل کانفیگ خودتون رو ایجاد کنیم پس در ادامه روش درست این کار رو توضیح میدم.
ایجاد فایل کانفیگ
خب از اونجا که همه چیز توی لاراول ساده ست برای ایجاد یه فایل کانفیگ کافیه که یه فایل به هر اسمی که دوست داریم توی پوشهی config ایجاد کنیم و توی خروجی فقط یه آرایه رو برگردونیم تا فایل کانفیگمون ساخته بشه! به عنوان مثال اگه بخوایم اطلاعات شبکههای اجتماعی سایت رو توی یه فایل کانفیگ ذخیره کنیم که هر وقت لازم داشتیم توی پروژه ازش استفاده کنیم یه پرونده به اسم social.php توی پوشهی کانفیگ میسازیم و داخل اون فعلاً یه آرایهی خالی رو بر میگردونیم.
return [];
در ادامه اگه بخوایم واقعا این فایل کانفیگمون یه اطلاعاتی رو برگردونه کافیه ایون گزینهها رو به عنوان کلیدها و مقادیرشون در آرایه وارد کنیم. مثلاً ما الان آدرس شبکههای اجتماعیمون رو در این آرایه به صورت زیر ایجاد میکنیم.
return [ 'facebook' => 'https://www.facebook.com/arash.kadkhodaei', 'twitter' => 'https://twitter.com/slasharash', 'github' => 'https://github.com/slasharsh' ];
حتی میتونیم از آرایهی چند بعدی همه استفاده کنیم مثل زیر.
return [ 'facebook' => [ 'url' => 'https://www.facebook.com/arash.kadkhodaei', 'username' => 'arash.kadkhodaei' ], 'twitter' => [ 'url' => 'https://twitter.com/slasharash', 'username' => 'slasharash' ], 'github' => [ 'url' => 'https://github.com/slasharash', 'username' => 'slasharash' ] ];
استفاده از مقادیر کانفیگ در پروژه
مثل بیشتر چیزها توی لاراول دوتا راه برای اجرای این کار داریم. اول استفاده از فساد مخصوص این کار یعنی Config یا فانکشن کمکی config() که خیلی هم تفاوتی نمیکنند.
استفاده از Config Facade
مثلاً میتونیم توی این مثال مقادیر کانفیگ رو به view ارسال کنیم. برای گرفتن مقدار یک کلید با استفاده از فساد کانفیگ باید از متد get استفاده کنیم. به صورت زیر.
Config::get('social.facebook.url');
همون طور که میبینید یه پارامتر به متد get ارسال شده که یه استرینگ هست که با نقطه از هم جدا شده. اولین بخش این استرینگ مربوط به نام فایل کانفیگی هست که ساختیم یعنی social. بعد از اون هم به ترتیب کلیدهای آرایهای هست که برگردوندیم. به همین سادگی ما مقادیر فایل کانفیگ رو برمیگردونیم.
گاهی لازمه که مقدار پیشفرض یا دیفالت رو برای یه کلید داشته باشیم تا در صورت نداشتن مقدار برای اون کلید مقدار پیشفرض نشون داده بشه. برای اینکار هم کافیه که مقدار پیشفرض مورد نظرمون رو به عنوان پارامتر دوم به متد get ارسال کنیم. به صورت زیر.
Config::get('social.facebook.url', 'without facebook account');
اگر هم لازم داریم که تمام مقادیر یک فایل کانفیگ رو برگردونیم کافیه فقط اسم پروندهی کانفیگ رو به متد get ارسال کنیم.
Config::get('social');
در صورتی که به تغییر یا تنظیم دوبارهی یه مقدار کانفیگ احتیاج پیدا کردیم میتونیم از متد set در فساد Config استفاده کنیم.
Config::set('social.facebook.url', 'newAccount');
فقط نکتهای که در set وجود داره اینه که کلیدی که میخوایم مقدار اون رو عوض کنیم باید حتما در فایل کانفیگ social یا فایل کانفیگ خودمون وجود داشته باشه.
استفاده از فانکشن کمکی config()
همونطوری که قبلاً گفتم تفاوت خاصی بین فساد Config و هلپر config() نیست. برای گرفتن مقدار یه کلید در پرونده کانفیگ مورد نظر مثل زیر عمل میکنیم.
config('social.facebook.url');
و برای تنظیم کردن دوبارهی یه کلید به صورت زیر
config('social.facebook.url', 'https://facebook.com/newAccount');
استفاده از متغیرهای محیطی فایل .env در فایل کانفیگ
فرض کنید قراره کدهای پروژه رو روی گیتهاب قرار بدید یا در کل در اختیار سایر افراد بذارید و توی فایل کانفیگی که ایجاد کردید یه مقدار محرمانه دارید که نباید در اختیار دیگران قرار بدید؛ مثل چی؟ مثل api key یا رمز عبور یا فلان. مثال زیر رو نگاه کنید.
return [ ... 'facebook' => [ 'url' => 'https://www.facebook.com/arash.kadkhodaei', 'username' => 'arash.kadkhodaei', 'password' => 'laravelisawsome!', 'api_key' => '138764782163845817345162837412' ], ... ];
خب در این صورت رمز عبور و api key ما در اختیار افراد دیگه قرار میگیره که همونطوری که اختمالاً میدونید پروندهی .env و متغیرهای محیطی برای همین توی لاراول وجود دارند. ما باید هر مقداری که دوست داریم فقط خودمون داشته باشیم توی این پروندهی .env ایجاد کنیم و البته که این پرونده رو باید در gitignore پروژه قرار بدیم تا به مخزن push نشه. خلاصه که برای مثال دوتا کلید به اسم FACEBOOK_API_KEY و FACEBOOK_PASSWORD در پروندهی .env ایجاد میکنیم و مقادیر لازم رو بهشون میدیم و الان کافیه که توی پروندهی کانفیگمون که اینجا social.php بود مقدار اونها رو به صورت زیر نمایش بدیم.
return [ ... 'facebook' => [ 'url' => 'https://www.facebook.com/arash.kadkhodaei', 'username' => 'arash.kadkhodaei', 'password' => env('FACEBOOK_PASSWORD'), 'api_key' => env('FACEBOOK_API_KEY') ], ... ];
حالا انگاری همه چیز رو به راهه! میتونیم از کار کردن با لاراول لذت ببریم ;)
ترجمه شده به همراه دخل و تصرف از How to use laravel config files