Sơ lượt về config file và cách lấy giá trị từ các file config trong Laravel 5

“Config file” là gì?

Khi làm việc với Laravel 5 hay thậm chí là Laravel 4, bạn có thấy một thư mục có tên là “config“?. Trong Laravel 5, thư mục “config” nằm ngay ở thư mục gốc project (còn trong laravel 4 thì nó nằm trong thư mục “app“), trong đó chứa các file như:

  • app.php: Chứa các cấu hình cơ bản cho web của bạn như app name, url, locale, các service provider, alias,…
  • auth.php: Cấu hình liên quan đến xác thực người dùng,…
  • broadcasting.php: Liên quan đến broadcasting trong Laravel.
  • cache.php: Cấu hình cache cho web như cách thức cache, nơi cache được lưu trữ,…
  • database.php: Cái tên nói lên tất cả rồi bạn nhé, những gì thuộc về cấu hình kết nối database thì cứ vào đây.
  • filesystems.php: Những cấu hình liên quan đến việc lưu trữ file của web sẽ nằm ở đây.
  • mail.php: Chẳng có gì để nói, những thông số phục vụ cho việc gửi mail của hệ thống sẽ cho vào đây như mail host, mail port, username, password,…
  • queue.php: Phục vụ cho Queue của ứng dụng web nếu có sử dụng.
  • services.php: Những cấu hình cho các dịch vụ khác như mailgun, mailchimp, các thông số của social application cần cho việc đăng nhập web bằng mạng xã hội,…
  • session.php: Những gì liên quan đến session thì bạn cấu hình tại đây như nơi lưu session, thời gian hết hạn,…
  • view.php: Hiện tại thì chỉ có 2 cấu hình cơ bản trong file này: cấu hình đường dẫn nơi bạn đặt các file blade (phần view trong Laravel) và đường dẫn nơi mà các file blade được biên dịch.

Nói chung, tất cả đều là những file được dùng để cấu hình trong Laravel, bạn có thể thay đổi giá trị từ trong các file đó (nhưng chú ý đừng phá bậy quá nhé).

Lấy giá trị thế nào?

Những file config có sẵn trong Laravel được tạo ra mặc định và sử dụng từ bên trong phần Core của Laravel. Đã có tạo ra thì phải có sử dụng ở một nơi nào đó, có “set” giá trị thì ắt phải có “get”. Vậy làm sao lấy được giá trị từ những config mặc định kia? Tại sao phải lấy những giá trị đó? Và khi nào sẽ lấy?

Hỏi một mạch như vậy thì làm sao mình trả lời kịp. Cứ từ từ bạn nhé.

Trước tiên, mình sẽ hướng dẫn cách lấy giá trị từ những file config.

Giả sử, tại footer của website mình muốn viết một đoạn copyright thế này "&copy; All Rights Reserved <a href="url">Codekhongkho.com</a>", mình cần một url để gắn cho thẻ “a [href]”, url đó lấy từ đâu? Bạn nên lấy từ biến ‘url‘ được cấu hình trong file app.php

config('app.url');
Hoặc
config('app.url', 'http://localhost'); // "http://localhost" là giá trị mặc định sẽ trả về khi biến url chưa tồn tại trong app.php

config là một helper function mà Laravel cung cấp cho bạn (Bạn có thể tham khảo thêm các helper khác tại đây).

Hoặc bạn có thể dùng Facade:

Config::get('app.url');
Hoặc
Config::get('app.url', 'http://localhost'); // "http://localhost" là giá trị mặc định

Thế tóm lại nên dùng cách nào? Bạn thích thế nào thì làm thế ấy nhé, nhưng mình nghĩ nên dùng helper function vì nó ngắn gọn hơn.

Suýt nữa thì quên, có phải bạn đã thắc mắc “Tại sao phải lấy những giá trị đó? Và khi nào sẽ lấy?”

Hình như ngẫm sâu một tí thì mình đã trả lời cho bạn rồi đấy. Tại sao phải lấy ư? Bạn thích thì lấy, cần thì lấy chứ tại sao gì. Và khi nào? Khi bạn cần, chỉ thế thôi.

Thường thì những biến được cấu hình ở các file trong thư mục config là biến toàn cục (Nói “thường thì” có vẻ không đúng, phải là “luôn luôn” nhé, mình viết cho câu văn nó hay tý á mà). Mà đã là biến toàn cục thì bạn được phép sử dụng trong toàn bộ website, nơi nào còn code được thì nơi ấy còn dùng được. Thế nên, những thứ bạn hay sử dụng ở nhiều nơi, dữ liệu lại giống nhau thì nên cho vào những file config kia. Để khi muốn thay đổi giá trị, chỉ cần sửa ở một nơi là file config bạn đã cho nó vào.

Tôi có thể tạo file config cho riêng mình?

Vâng! Bạn có thể. Bạn muốn tạo bao nhiêu tùy thích. Chỉ cần tạo bất kỳ file gì trong thư mục “config”, thì lập tức file đó trở thành file config và những array key định nghĩa trong đó sẽ trở thành biến toàn cục.

Ví dụ, mình tạo một file có tên: setting.php

<?php
return [
    'image_path' => '/image/',
    'language' => [
        'en' => 'English',
        'vn' => 'Việt Nam',
        'jp' => '日本語',
    ],
];

Cách lấy giá trị

config('setting.image_system');
config('setting.language'); // Lấy mảng giá trị nằm trong nó
config('setting.language.en'); // Trả về "English"

Lời kết

Như vậy, trải qua một vài phút luyện công, chúng ta đã nắm sơ lượt về config file và cách lấy giá trị từ các file config trong Laravel 5. Hẹn gặp lại các bạn ở những bài viết tiếp theo.

Đừng quên để lại comment khi có điều gì cần tâm sự với mình nhé 😀

Nguồn: Codekhongkho.com

Bình luận của bạn

avatar
  Đăng ký  
Thông báo khi
trackback

[…] bài trước, mình đã giới thiệu sơ lượt về config file và cách lấy giá trị từ các file config trong Laravel 5. Vậy trong bài này, chúng ta sẽ cùng tìm hiểu xem cách thiết lập giá trị cho […]