tuum/builder

基于环境的PHP应用通用构建工具。

1.0.0 2017-11-06 07:55 UTC

This package is auto-updated.

Last update: 2024-08-28 17:31:04 UTC


README

基于各种服务器环境构建应用的通用构建工具。

许可证

MIT许可证

PSR

PSR-1, PSR-2, 和 PSR-4。

安装

composer require "tuum/builder: ^1.0.0"

示例代码

use WScore\Builder\Builder;

$builder  = Builder::forge(
    __DIR__ . '/config,  // app directory
    __DIR__ . '/var',    // var directory
    true                 // debug
);
$builder->loadEnv();
$builder->load('setup');
$builder->load('routes');
if ($builder->isEnv('local')) {
    $builder->load('extra.local');
}

$app = $builder->getApp(); // <- must set an app using setApp()!

基本用法

目录结构

Tuum/Builder 假设有两个目录来构建一个应用

  • APP_DIR:应用设置的目录,以及
  • VAR_DIR:不受版本控制文件所在的目录。

例如,

+ config/          // <- APP_DIR
   + setup.php
   + routes.php
+ var/             // <- VAR_DIR
   + .env
   + cache/

构建

使用两个目录构建应用构建器

use WScore\Builder\Builder;

$builder  = new Builder([
    Builder::APP_DIR => __DIR__ . '/config,  // app directory
    Builder::VAR_DIR => __DIR__ . '/var',    // var directory
    Builder::DEBUG   => true                 // debug
]);

或者,如 示例代码部分 所示,简单地使用 forge 方法。

加载PHP文件

要加载 APP_DIR 下的配置文件,使用 load 方法如下;

$builder->load('setup');

setup.php 文件中,设置应用,例如

/** @var Tuum\Builder\Builder $builder */
$builder->set(Builder::APP_KEY, 'ENV');  // set value
$builder->setApp(new YourApp()); // set your application

return [
    'db-name' => $builder->get('DB_NAME', 'demo'),
]; // may return some value
  • 构建器拥有期望的 hasgetset 方法。
  • 存在 setApp()getApp() 方法来存储您的应用。
  • 从PHP文件返回的值使用构建器的加载名称存储,可以通过: $builder->get('setup'); 来访问。

获取值

get 方法尝试从以下位置获取值:

  1. 环境值,
  2. $builder 的内部值
  3. 默认值。
$builder->get('DB_NAME', 'my_db');

环境文件

使用 vlucas的dotenv组件 加载 .env 文件。默认的 .env 文件位置在 VAR_DIR

.env 文件包含 APP_ENV 键来指定环境,如下所示;

APP_ENV = local

然后,您可以访问环境如下,

$builder->loadEnv(); // load the .env file

$builder->isEnv('local');
$builder->isEnvProd();
$env = $builder->getEnv();

如果没有设置环境或没有要加载的环境文件,构建器将环境视为 prod

要更改用于指定环境的键字符串,将 Builder::APP_KEY 的值设置为新的键名,例如;

$builder->set(Builder::APP_KEY, 'ENV');  // set value