electblake/environments

该软件包最新版本(1.0.1)没有可用的许可信息。

作为插件的 CakePHP 环境库

安装: 20

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 12

类型:cakephp-plugin

1.0.1 2013-02-05 05:02 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:00:57 UTC


README

作为插件的 CakePHP 环境库

要求

  • CakePHP 2.x

安装

[手册]

[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:通常像 productiondevelopment 这样。好的做法是将它命名为与文件相同的名称,这样就不会对给定环境文件包含的内容产生任何混淆

  • $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 包装器、nginxapache 配置,甚至在您的云提供商的 env 设置中(如 Heroku 或 PHPFog)设置连接信息。

待办事项

  • 单元测试

许可

版权 (c) 2010-2012 Jose Diaz-Gonzalez

本软件及其相关文档文件(以下简称“软件”)的副本获取者,在此获得免费许可,可以在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许软件的受供者进行此类操作,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他原因,以及与软件或其使用或其他操作有关。