dbtlr/php-env-builder

一个帮助自动化构建 .env 文件的 PHP 库。

v1.0.0 2018-08-17 14:17 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:05:43 UTC


README

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

使从命令行构建 .env 文件变得简单。

为了在您的开发工作流程中加载和使用 .env 文件,我强烈建议查看 vlucas/phpdotenv 包,它有助于抽象化加载环境变量的过程。这个库旨在帮助您构建一个本地 .env 库,您可以将其添加到 .gitignore 文件中,而不需要大多数人添加的额外的 .env.example 文件,该文件通常用于说明如何构建它。

为什么是 .env?

安装

安装此库的推荐方法是使用 Composer

从您的项目根目录运行以下命令

$ composer require --dev dbtlr/php-env-builder

作为 Composer 脚本的用法

由于 Composer 提供了自己的与控制台 IO 交互的方式,因此在这种情况下,extra.php-env-builder 配置是设置您的问题和变量名的正确方法。

为了在运行 composer installcomposer update 时构建 .env 文件,您应该提供类似以下的配置

{
    "scripts": {
        "build-env": "Dbtlr\\PHPEnvBuilder\\ComposerScriptRunner::build",
        "post-install-cmd": "@build-env",
        "post-update-cmd": "@build-env"
    },
    "extra": {
        "php-env-builder": {
            "envFile": ".env",
            "questions": [
                {
                    "name": "MYSQL_HOST",
                    "prompt": "What is the hostname for the MySQL server?",
                    "default": "127.0.0.1",
                    "required": true
                },
                {
                    "name": "MYSQL_PORT",
                    "prompt": "The port for the MySQL server?",
                    "default": "3306",
                    "required": true
                },
                {
                    "name": "MYSQL_USER",
                    "prompt": "What is the MySQL user?",
                    "default": "app",
                    "required": true
                },
                {
                    "name": "MYSQL_PASSWORD",
                    "prompt": "What is the MySQL password?",
                    "default": "app-password",
                    "required": true
                }
            ]
        }
    }
}

所有 extra.php-env-builder 选项

  • questions - 默认:[] (必需) // 包含至少 nameprompt 元素的问答数组。
  • envFile - 默认:.env // 绝对路径或相对于 package.json 文件的路径。
  • clobber - 默认:false // 构建时是否覆盖现有的 .env 文件?
  • loadEnv - 默认:false // 如果正在覆盖现有文件,是否会将其加载以提供默认值?
  • verbose - 默认:false // 额外输出

通用用法

如果您想自己编写脚本,语法本身相当简单。

注意:这是一个不太常见的用例,因为需要由 Composer 提供控制台 IO,以便它可以在 Composer 脚本内部接受输入。这可能对您从 Makefile 或 npm run postinstall 运行此脚本很有用。

require_once __DIR__ . "/vendor/autoload.php";

$config = [
    'verbose' => true,
    'loadEnv' => true,
];

$builder = new \Dbtlr\PHPEnvBuilder\Builder('/path/to/.env', $config);

$builder->ask(
    'name',              // ENV variable name
    'What is your name?' // Command prompt
    '',                  // Default answer
    true                 // Is required?
);

$builder->run(); // Run the builder and return the answers.
$builder->write(); // Write the answers to the file.

运行测试吗?

所有测试都使用 PHPUnit 运行。请确保您已安装至少 PHP 7.1,以及 Composer

要运行测试,只需运行

composer install
composer test

想要贡献?

在此处了解更多信息