imsamurai / dynamic-database-config
动态编译数据库配置的实用工具
1.0.1
2014-09-19 12:57 UTC
Requires
This package is not auto-updated.
Last update: 2024-09-28 16:24:21 UTC
README
摘要
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); } }
这就是全部!如果您有任何问题或建议,欢迎在问题中提出。