Giới thiệu về PHP dotenv
PHP dotenv là một thư viện PHP nhẹ giúp bạn quản lý các biến môi trường (environment variables) một cách dễ dàng và an toàn. Thay vì hard-code các cấu hình nhạy cảm như mật khẩu database, API key hay secret token trực tiếp trong mã nguồn, bạn có thể lưu chúng trong file .env và nạp vào ứng dụng khi khởi động.
Thư viện này được phát triển bởi Vladaíslav Bortnik (tên gốc là vlucas/phpdotenv) và hiện là một trong những package PHP được sử dụng rộng rãi nhất trên Packagist, với hơn 50 triệu lượt tải.
Bài viết này thuộc chuyên mục Lập trình WordPress và nằm trong series Thư viện PHP hữu ích.
Cài đặt PHP dotnet
Bạn có thể cài đặt thư viện thông qua Composer:
composer require vlucas/phpdotenv
Sau khi cài đặt xong, file .env sẽ được đặt ở thư mục gốc của dự án. Đây là nơi bạn khai báo tất cả các biến môi trường.
Cách sử dụng cơ bản
Dưới đây là ví dụ cơ bản về cách sử dụng PHP dotenv trong ứng dụng:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use DotenvDotenv;
// Tạo đối tượng Dotenv và nạp file .env
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
// Truy cập biến môi trường
$dbHost = $_ENV['DB_HOST'];
$dbName = $_ENV['DB_NAME'];
$dbUser = $_ENV['DB_USER'];
$dbPass = $_ENV['DB_PASS'];
echo "Kết nối đến: $dbHost/$dbName";
?>
Và file .env tương ứng:
DB_HOST=localhost
DB_NAME=chuyendev
DB_USER=root
DB_PASS=supersecret123
APP_ENV=development
APP_DEBUG=true
Các phương thức quan trọng
Thư viện cung cấp nhiều phương thức hữu ích để kiểm soát biến môi trường:
createImmutable()– Tạo đối tượng Dotenv không cho phép ghi đé biến đã tồn tạicreateMutable()– Tạo đối tượng Dotenv cho phép ghi đè biếnload()– Nạp biến từ file .env vào môi trườngrequired()– Xác định biến bắt buộc phải cóifPresent()– Chỉ nạp biến nếu nó tồn tại
Kiểm tra biến bắt buộc
<?php
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
// Yêu cầu các biến bắt buộc
$dotenv->required(['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS']);
// Kiểm tra với validator
$dotenv->required('DB_HOST')->notEmpty();
$dotenv->required('APP_ENV')->allowedValues(['development', 'production', 'testing']);
$dotenv->required('APP_DEBUG')->isBoolean();
?>
Tham khảo thêm: GitHub – vlucas/phpdotenv.
Sử dụng trong WordPress
Trong các dự án WordPress, bạn có thể tích hợp PHP dotenv vào file wp-config.php:
<?php
require_once __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
// Ghi đè cấu hình bằng biến môi trường
define('DB_NAME', $_ENV['DB_NAME']);
define('DB_USER', $_ENV['DB_USER']);
define('DB_PASSWORD', $_ENV['DB_PASS']);
define('DB_HOST', $_ENV['DB_HOST'] ?? 'localhost');
// WP_ENVIRONMENT_TYPE
if (isset($_ENV['WP_ENV'])) {
define('WP_ENVIRONMENT_TYPE', $_ENV['WP_ENV']);
}
?>
Kết luận
PHP dotenn là một thư viện đơn giản nhưng vô cùng mạnh mẽ, giúp bạn áp dụng 12-Factor App vào dự án PHP của mình. Việc tách biệt cấu hình khỏi mã nguồn không chỉ giúp bảo mật tốt hơn mà còn làm cho việc triển khai ứng dụng trở nên linh hoạt hơn giữa các môi trường (development, staging, production).
Hãy kết hợp với các thư viện khác như Whoops để có một môi trường phát triển PHP chuyên nghiểp hơn.