electblake / environments
作为插件的 CakePHP 环境库
Requires
This package is not auto-updated.
Last update: 2024-09-14 14:00:57 UTC
README
作为插件的 CakePHP 环境库
要求
- CakePHP 2.x
安装
[手册]
- 下载此文件: https://github.com/OctoBear/cakephp-environments/zipball/master
- 解压下载文件。
- 将生成的文件夹复制到
app/Plugin
- 将您刚刚复制的文件夹重命名为
Environments
[GIT 子模块]
在您的应用目录中键入
git submodule add git://github.com/OctoBear/cakephp-environments.git Plugin/Environments
git submodule init
git submodule update
[GIT 克隆]
在您的插件目录中键入
git clone git://github.com/OctoBear/cakephp-environments.git Environments
启用插件
在使用前,您必须启用此插件
CakePlugin::load('Environments');
如果您在用法之前已经使用了 CakePlugin::loadAll();
,那么此操作不是必需的。
用法
设置如下目录结构
app/Config/bootstrap/environments.php
app/Config/bootstrap/environments/production.php
app/Config/bootstrap/environments/staging.php
app/Config/bootstrap/environments/development.php
我们指定多个 环境 文件以分隔不同的配置,并便于检查特定环境。这不是必需的,但如果您正在配置大量信息,则很有用。
您的 environments.php
应包含以下内容
<?php
CakePlugin::load('Environments');
App::uses('Environment', 'Environments.Lib');
include dirname(__FILE__) . DS . 'environments' . DS . 'production.php';
include dirname(__FILE__) . DS . 'environments' . DS . 'staging.php';
include dirname(__FILE__) . DS . 'environments' . DS . 'development.php';
Environment::start();
这将
- 在可能尚未加载的情况下加载环境插件
- 按特定顺序包含每个环境(开发通常是最后一个)
- 启动环境
环境配置
每个环境可以配置如下
Environment::configure($name, $params, $config = null, $callable = null);
此插件中 Config/bootstrap/environments
文件夹中的示例用法可供参考。
-
$name
:通常像production
或development
这样。好的做法是将它命名为与文件相同的名称,这样就不会对给定环境文件包含的内容产生任何混淆 -
$params
:一个数组或布尔值,用于检查此环境是否适用。如果布尔值为真,则此环境会自动启动。只有在开发中使用true
值# If a previous environment is not enabled, this one will be set Environment::configure('development', true, array('debug' => true));
如果是一个数组,则 键 可以是调用的函数名,而 值 将传递给它
Environment::configure('development', true, array( 'some_function' => 'aValueForThisCheck', 'another_function' => 'aDifferentValueForThisCheck', ));
在其他所有情况下,我们只是检查环境
Environment::configure('octo_development', true, array( 'SERVER_NAME' => 'octo-example.dev', )); Environment::configure('bear_development', true, array( 'SERVER_NAME' => 'bear-example.dev', )); Environment::configure('development', true, array( 'CAKE_ENV' => 'development', ));
如果我们正在 CLI 中运行,唯一强制执行的检查是
CAKE_ENV
,其值必须是环境的名称CAKE_ENV=production Console/cake bake all
如果设置了
CAKE_ENV
环境变量,它将覆盖所有内容,包括$params
的布尔值。 -
$config
:如果设置了,则通过Configure::write()
设置的keys
=>values
的数组。对于批量设置 API 密钥、数据库连接信息等很有用。 -
$callable
:PHP 可调用,如array('ClassName', 'functionName')
。在 PHP53+ 中,还可以使用匿名函数。这是设置可能取决于某些函数调用值的信息的首选方法。
数据库切换
您可能希望根据当前环境设置数据库连接信息。以下是一个首选方法
<?php
class DATABASE_CONFIG {
public $default;
public function __construct() {
$this->default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => $this->read('MYSQL_DB_HOST'),
'login' => $this->read('MYSQL_USERNAME'),
'password' => $this->read('MYSQL_PASSWORD'),
'database' => $this->read('MYSQL_DB_NAME'),
'prefix' => $this->read('MYSQL_PREFIX'),
'encoding' => 'utf8',
);
}
public function read($key, $default = null) {
$value = env($key);
if ($value !== null) {
return $value;
}
$value = Configure::read($key);
if ($value !== null) {
return $value;
}
return $default;
}
}
这样,查看连接信息的唯一地方就是您的配置环境。您还可以通过 CLI
包装器、nginx
或 apache
配置,甚至在您的云提供商的 env 设置中(如 Heroku 或 PHPFog)设置连接信息。
待办事项
- 单元测试
许可
版权 (c) 2010-2012 Jose Diaz-Gonzalez
本软件及其相关文档文件(以下简称“软件”)的副本获取者,在此获得免费许可,可以在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许软件的受供者进行此类操作,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他原因,以及与软件或其使用或其他操作有关。