imsamurai/dynamic-database-config

动态编译数据库配置的实用工具

1.0.1 2014-09-19 12:57 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:24:21 UTC


README

查看动态数据库配置API文档

摘要

Build Status Coverage Status Latest Stable Version Total Downloads Latest Unstable Version License

CakePHP DynamicDatabaseConfig插件,用于更灵活地处理数据源配置

安装

步骤 1:克隆或下载到 Plugin/DynamicDatabaseConfig

cd my_cake_app/app git://github.com/imsamurai/CakePHP-DynamicDatabaseConfig.git Plugin/DynamicDatabaseConfig

或者如果您使用git添加子模块

cd my_cake_app
git submodule add "git://github.com/imsamurai/CakePHP-DynamicDatabaseConfig.git" "app/Plugin/DynamicDatabaseConfig"

然后更新子模块

git submodule init
git submodule update

步骤 2:扩展您的 DATABASE_CONFIG

:: database.php ::
App::uses('DynamicDatabaseConfig', 'DynamicDatabaseConfig.Config');
class DATABASE_CONFIG extends DynamicDatabaseConfig {
	//class items
}

然后创建您想要动态加载的配置(当类实例被创建时)

:: database.php ::
App::uses('DynamicDatabaseConfig', 'DynamicDatabaseConfig.Config');
class DATABASE_CONFIG extends DynamicDatabaseConfig {
	//can't start with _ and must be public
	public defaultPublic() {
		return array(/* config data, like in property-config */);
	}
}

步骤 3:加载插件

:: bootstrap.php ::
CakePlugin::load('DynamicDatabaseConfig');

##用法

一旦您在您的 DATABASE_CONFIG 中添加了公共方法,它们将被自动分配给同名的公共属性。现在您可以根据现有配置的部分轻松创建新的配置。您的旧属性配置将按常规工作,除非您创建了具有相同名称的方法。

##高级用法

存在简单的配置动态重命名。假设您想添加默认配置、测试环境和公共环境的配置。在您的模型中使用 default 配置,并且您有关于这是否是公共或测试环境的信息,例如常量 IS_PUBLIC_INSTALLATION。在这种情况下,您需要添加3个配置,允许重命名并执行重命名操作

:: database.php ::
App::uses('DynamicDatabaseConfig', 'DynamicDatabaseConfig.Config');
class DATABASE_CONFIG extends DynamicDatabaseConfig {

	//allow to rename configs
	const APPLY_NAMING_SCHEMA = true;

	//default config
	public default() {
		return array(/* config data, like in property-config */);
	}

	//public config
	public defaultPublic() {
		return array(/* config data, like in property-config */);
	}

	/local config
	public defaultLocal() {
		return array(/* config data, like in property-config */);
	}

	/* Method that will get each existing config name and try to rename it
	 * if $configName will not equals to returned value then
	 * config with returned value name will be erased with data from $configName
     *
	 * In case of current method if IS_PUBLIC_INSTALLATION is true
	 * `default` config gets data from `defaultPublic` otherwise from `defaultLocal`
	 */
	protected function _renameConfig($configName) {
		$postfix = IS_PUBLIC_INSTALLATION ? 'Public' : 'Local';
		return preg_replace('/(.*)' . $postfix . '$/', '\1', $configName);
	}
}

这就是全部!如果您有任何问题或建议,欢迎在问题中提出。