ساخت یک پیکربندی جدید در لاراول

ترجمه و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 13 خرداد 98
خواندن در 1 دقیقه
دسته بندی ها : لاراول

پیکربندی لاراول به شما اجازه میده با استفاده از پکیج فوق العاده vlucas/phpdotenv تنظیماتی رو تعریف کنید. 

اگر شما در لاراول تازه کار هستید ممکنه که هنوز در مورد ساخت فایل های پیکربندی در پروژه لاراولی ندونید. مثل همیشه مستندات رسمی لاراول اطلاعات کاملی رو برای شما فراهم کرده, و ما در این مقاله نکاتی رو پوشش میدیم تا این بحث به خوبی جا بیافته.

پیکربندی چگونه کار می کند؟

در سطح بالا, فایل های پیکربندی در پوشه config پروژه لاراول قرار دارند. فریمورک با فایل های پیکربندی مختلفی آمده که کار رو برای اعمالی مثل انتخاب درایور دیتایس یا تعریف سرویس های خارجی راحت میکنه.

برای مثال, این بخشی از view فایل پیکربندی congif/services.php هست :

return [
    // ...
    'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN'),
        'secret' => env('MAILGUN_SECRET'),
    ],

    // ...

توجه کنید که ()env مقادیر از پیش تعریف شده ی فایل env. رو تغییر میده.

وقتی شما یک پیکربندی محیطی در ماشینتون تعریف می کنید, بر فایل env. اولویت داره.

کمکی ()env به شما اجازه میده تا مقدار محیطی رو وقتی که در سیستم یا فایل env. وجود نداره تعیین کنید. برای مثال اتصال پیش فرض در مسیر config/database.php وقتی که DB_CONNECTION تعریف نشده باشه, بصورت mysql هست.

return [
    'default' => env('DB_CONNECTION', 'mysql'),
    // ...
];

تمام مقادیر محیطی از پکیج phpdotenv بعنوان string برگشت داده میشه, اما کمکی ()env در لاراول کارهای بیشتری با مقادیر محیطی انجام میده. برای مثال کمکی لاراول رشته ی "false" رو به  Boolean false تبدیل میکنه, کلیدواژه "empty" رو به یک رشته خالی و "null" رو به مقدار هیچ تبدیل میکنه. برای مطالعه بیشتر میتونید به این لینک مراجعه کنید.

دسترسی به سرویس پیکربندی

راه معمول دسترسی به پیکربندی در لاراول از طریق سرویس پیکربندی یا کمکی ()config هست.

در ادامه به نحوه استفاده از سرویس پیکربندی می پردازیم :

php artisan tinker

>>> app('config')->get('services');
=> [
     "mailgun" => [
       "domain" => null,
       "secret" => null,
     ],
     "ses" => [
       "key" => null,
       "secret" => null,
       "region" => "us-east-1",
     ],
     "sparkpost" => [
       "secret" => null,
     ],
     "stripe" => [
       "model" => "App\User",
       "key" => null,
       "secret" => null,
     ],
   ]

کمکی ()config کار رو راحت میکنه و اگر argument پاس ندید, شما همچنان به سرویس پیکربندی دسترسی دارید :

کار با پیکربندی

$ php artisan tinker

>>> config()
=> Illuminate\Config\Repository {#37}

>>> config()->get('services')
...
>>> config('services')

پیکربندی در آرایه های PHP تعریف شده و شما میتونید به مقادیر آرایه ها توسط علامت نقطه دسترسی داشته باشید. اولین قسمت کلید پیکربندی تطبیق نام فایل هست. برای مثال, کد زیر از فایل congif/services.php هست :

$ php artisan tinker

>>> config('services.mailgun');
=> [
     "domain" => "mg.example.com",
     "secret" => "secret",
   ]
>>> config('services.mailgun.domain');
=> mg.example.com

مثل کمکی ()env, کمکی پیکربندی به شما اجازه میده اگر کلید پیکربندی تعریف نشده باشه, یک مقدار پیشفرض تعیین کنید.

$ php artisan tinker

>>> config('my.invalid.key', 'mg.example.com');
=> mg.example.com

همچنین شما میتونید پیکربندی رو در runtime تغییر بدید یا تنظیم کنید.

>>> config(['example' => 'Hello World']);
=> null
>>> config('example');
=> "Hello World"

>>> config([
... 'view.paths' =>
... array_merge(config('view.paths'), ['my/other/path/'])
... ]);

ساخت فایل پیکربندی

با افزودن فایل های پیکربندی به پوشه config میتونید, فایل های پیکربندی جدیدتون رو بسازید :

$ touch config/api.php

سپس میتونید با افزودن پیشوند "api" به مقادیر پیکربندی دسترسی داشته باشید :

>>> config('api.base_url');

این فقط یک مثال هست, برای سرویس هایی مثل API ها با افزودن کلیدهای جدید, از فایل config/services.php استفاده کنید. برای مثال فرض کنیم شما میخواهید auth0 رو به service.php بیافزایید :

return [
    'auth0' => [
        'secret' => env('AUTH0_CLIENT_SECRET')
    ],
];

بهینه سازی پیکربندی

وقتی شما اپلیکیشن رو به مرحله تولید (production) برسونید, شما باید با استفاده از این دستور پیکربندی رو بهینه کنید :

php artisan config:cache

با استفاده از این دستور هم میتونید کش پیکربندی رو پاک کنید :

php artisan config:clear

منبع

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید