12/08/2018, 17:10

Cách sử dụng laravel config file

Ban đầu bạn lưu trữ các tập tin trên mấy chủ local và vì 1 lí do nào đó bạn muốn chuyển sang lưu trữ trên cloud.. chẳng hạn amazon s3. Vì bạn là người dùng Laravel, bạn mở file config/filesystems.php, sau đó thay đổi giá trị mặc định từ local sang s3, điền vào các khóa API. Như vậy, bạn đã tải tệp ...

Ban đầu bạn lưu trữ các tập tin trên mấy chủ local và vì 1 lí do nào đó bạn muốn chuyển sang lưu trữ trên cloud.. chẳng hạn amazon s3. Vì bạn là người dùng Laravel, bạn mở file config/filesystems.php, sau đó thay đổi giá trị mặc định từ local sang s3, điền vào các khóa API. Như vậy, bạn đã tải tệp lên Amazon S3...easy...very easy

Đây là một ví dụ về config hệ thống. Bằng cách đặt một số giá trị mảng trong một tệp tin, như vậy chúng ta có thể lấy ra các cấu hình dễ dàng.

Laravel có nhiều tập tin cấu hình sẵn trong thư mục config. Chúng ta cũng có tùy chọn để tạo tập tin cấu hình riêng của mình.

  • mình thích thì mình dùng thôi ^^.
  • Khi 1 thông tin nào đó được sử dụng ở nhiều nơi và muốn thay đổi dễ dàng sau này..
  • Khi xây dựng một package Laravel, các tập tin cấu hình sẽ giúp bạn xây dựng một package phần mềm có cấu hình và chức năng.

Một lý do khiến các nhà phát triển thích Laravel là thực tế nó làm cho mọi thứ trở nên đơn giản. Tạo tệp cấu hình không phải là ngoại lệ cho quy tắc đó. Để tạo một tập tin cấu hình, vào thư mục config và tạo một tập tin ở đó. Ví dụ, chúng ta tạo tập tin social.php. Sau khi tạo tập tin, mở nó và trả về một mảng trống. Tại đó, chúng ta đã tạo ra một tệp tin cấu hình.

return [];

Bây giờ chúng ta đã có file cấu hình, chúng ta cần thiết lập các tùy chọn. Để làm điều đó, chúng ta đặt các giá trị mảng như là các tùy chọn:

return [
    'facebook' => 'https://www.facebook.com/scotchdevelopment',
    'twitter' => 'https://twitter.com/scotch_io'
];

Chúng ta thậm chí có thể sử dụng mảng đa chiều.

return [
    'facebook' => [
        'url' => 'https://www.facebook.com',
        'username' => 'xxxname'
    ],
    'twitter' => [
        'url' => 'https://twitter.com/scotch_io',
        'username' => 'scotch_io'
    ]
];

Có hai cách để chúng ta có thể truy cập các biến số cấu hình có trong tệp tin cấu hình. Phương pháp đầu tiên chúng ta sẽ nói đến là sử dụng Config Facade của Laravel.

Config Facade

Để có được tùy chọn trong tệp tin config, chúng ta gọi phương thức get trong Config. Để có được giá trị, chúng ta sử dụng dấu chấm. Để có được URL trang của facebook, chúng ta sẽ sử dụng như thế này

echo Config::get('facebook.url');

Nhưng, nó sẽ không làm việc ^^. Chúng ta cần phải nói cho facade tập tin cấu hình nào để sử dụng. Để làm điều đó, chỉ cần nhập tên của tệp cấu hình mà không có .php và dấu chấm như sau.

echo Config::get('social.facebook.url');

Truyền tham số thứ hai cho phương thức get có nghĩa là bạn muốn trả lại một giá trị mặc định nếu giá trị config không tồn tại.

Config::set('social.facebook.url', 'caigido');

Chúng ta cũng có thể truyền một mảng và sử dụng nó để đặt các giá trị.

Config::set([
    'social.facebook.url' => 'http://example.com'
]);

Config function

Chức năng config giống hệt cấu hình của Config. Để lấy được giá trị, chúng ta sử dụng:

echo config('social.facebook.url');

để gán giá trị mặc định khi không có giá trị config, chúng ta sử dụng:

config('social.facebook.url', 'http://example.com');

hoặc

config([
    'social.facebook.url' => 'http://example.com'
]);

Đôi khi chúng ta cần dữ liệu nhạy cảm trong các file cấu hình của chúng ta. Dữ liệu mà chúng ta không muốn hiển thị trong repo git. Những dữ liệu này bao gồm các khóa API, tên người dùng và mật khẩu..v.v. Để giải quyết vấn đề này, chúng ta có thể sử dụng các biến môi trường. Mở file cấu hình chúng ta có thể thêm một phần khóa API vào mảng facebook như sau:

[
    ...
    'facebook' => [
        'url' => 'https://www.facebook.com/scotchdevelopment',
        'username' => 'scotchdevelopment',
        'api_key' => '138764782163845817345162837412'
    ],
    ...
]

Khi bạn push trang web của bạn để git hoặc bất cứ điều khiển phiên bản bạn sử dụng, điều này sẽ được lưu giữ. Một giải pháp thích hợp hơn là sử dụng các biến môi trường. Rất may, trong Laravel chúng ta có thể tạo ra một biến môi trường trong tệp .env và tham chiếu nó trong code của chúng ta bất cứ khi nào chúng ta cần. Vì vậy, chúng ta tạo một FACEBOOK_API_KEY mới trong tệp .env và sử dụng nó trong ứng dụng như thế này:

[
    ....
    'facebook' => [
        'url' => 'https://www.facebook.com/scotchdevelopment',
        'username' => 'scotchdevelopment',
        'api_key' => env('FACEBOOK_API_KEY')
    ],
    ....
]

Điều này tốt hơn rất nhiều.

Các tệp cấu hình rất hữu ích khi phát triển trong Laravel, đặc biệt là khi xây dựng các package Laravel. Vì Laravel cung cấp một cách dễ dàng để tạo ra và sử dụng chúng, nó sẽ làm cho chúng tốt hơn để sử dụng.

0