naingaunglwin-dev / dotenv
简单的PHP Dotenv库
1.0.2
2024-09-11 17:42 UTC
Requires
- php: ^8.0
This package is auto-updated.
Last update: 2024-09-11 17:47:41 UTC
README
简单的Dotenv库
关于
NAL\Dotenv 类是一个轻量级的PHP包,用于管理环境变量。它允许您从文件中加载环境变量,分组变量,并在您的PHP应用程序中访问它们。该类支持从多个文件中加载变量。
贡献
- 这是一个开源库,欢迎贡献。
- 如果您有任何建议、错误报告或功能请求,请在该项目的存储库中打开一个问题或提交一个pull请求。
需求
- PHP 版本 8.0 或更高版本是必需的
安装 & 设置
- 您可以直接从存储库下载代码并使用,或者使用composer下载。
使用Composer下载
- 如果您没有composer,请首先安装 composer。
- 在您的项目根目录中创建
composer.json文件。 - 将以下内容添加到
composer.json
{
"require": {
"naingaunglwin-dev/dotenv": "^1.0"
}
}
- 从项目的根目录中,在您的终端中运行以下命令
composer install
如果您在项目中已经有 composer.json 文件,只需在您的终端中运行此命令,
composer require naingaunglwin-dev/dotenv
功能
- 基本路径处理:项目的基准路径自动设置为项目根级,但您可以在初始化类时提供自定义基准路径。
- 环境组:根据前缀分组环境变量。
- 文件验证:确保指定的 .env 文件(夹)存在于项目目录中。
- 环境更新:同步环境变量与PHP的 $_SERVER 和 $_ENV 超全局变量。
配置
- 您可以通过将其传递给构造函数来自定义用于定位环境文件的基准路径。
$dotenv = new Dotenv(null, '/custom/path/');
-
如果没有提供文件,Dotenv类将在指定的或根目录中搜索以下默认文件
- .env
- .env.local
- .env.development
- .env.production
- .env.dev
- .env.prod
使用
加载环境变量
- 要加载环境变量,只需初始化Dotenv类。
- 默认情况下,它会在项目根目录中查找常见的 .env 文件(如 .env、.env.local、.env.production 等)。
<?php require_once "vendor/autoload.php"; use NAL\Dotenv\Dotenv; // Initialize Dotenv and load environment variables $dotenv = new Dotenv();
- 您也可以通过将文件名传递给构造函数来指定要加载的自定义环境文件
$dotenv = new Dotenv('.env.testing');
- 或加载多个文件
$dotenv = new Dotenv(['.env.dev', '.env.prod']);
访问环境变量
- 一旦加载了环境文件,您就可以使用get()方法检索环境变量。如果没有提供键,它将返回所有变量。
// Get a specific variable $appName = $dotenv->get('APP_NAME'); // Get all variables $envVariables = $dotenv->get();
- 如果键不存在,您也可以提供默认值
$debugMode = $dotenv->get('DEBUG_MODE', false);
分组环境变量
- 您可以使用group()方法访问分组环境变量。
- 如果您的变量根据前缀(例如,APP_NAME、APP_ENV)结构化,这可能很有用。
$appGroup = $dotenv->group('APP');
重新加载环境变量
- 您可以通过调用
reload()方法重新加载环境变量。此方法清除先前加载的变量,并从指定的文件中重新加载它们。
$dotenv->reload();
异常处理
-
Dotenv类抛出以下异常
- NAL\Dotenv\Exception\Missing:当指定的环境文件不存在时抛出。
- NAL\Dotenv\Exception\UnMatch:当环境变量键与预期格式不匹配时抛出。
示例
use NAL\Dotenv\Dotenv; try { // Initialize dotenv $dotenv = new Dotenv(); // Load variables from a specific .env file $dotenv->load('.env'); // Get environment variables $dbHost = $dotenv->get('DB_HOST', 'localhost'); // Get all environment variables $allEnv = $dotenv->get(); } catch (\Exception $e) { echo 'Error loading environment variables: ' . $e->getMessage(); }