Last active
August 29, 2015 14:00
-
-
Save hkurosawa/33333ed1dd94140bf9a3 to your computer and use it in GitHub Desktop.
CakePHP 2.x database.php file to switch between database configuration settings based on file existence under app/Config directory
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// CakePHP 2.x database.php file to switch between database configuration settings based on file existence under app/Config directory | |
/** | |
* This is core configuration file. | |
* | |
* Use it to configure core behaviour of Cake. | |
* | |
* PHP 5 | |
* | |
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org) | |
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) | |
* | |
* Licensed under The MIT License | |
* For full copyright and license information, please see the LICENSE.txt | |
* Redistributions of files must retain the above copyright notice. | |
* | |
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) | |
* @link http://cakephp.org CakePHP(tm) Project | |
* @package app.Config | |
* @since CakePHP(tm) v 0.2.9 | |
* @license http://www.opensource.org/licenses/mit-license.php MIT License | |
* | |
* Database configuration class. | |
* You can specify multiple configurations for production, development and testing. | |
* | |
* datasource => The name of a supported datasource; valid options are as follows: | |
* Database/Mysql - MySQL 4 & 5, | |
* Database/Sqlite - SQLite (PHP5 only), | |
* Database/Postgres - PostgreSQL 7 and higher, | |
* Database/Sqlserver - Microsoft SQL Server 2005 and higher | |
* | |
* You can add custom database datasources (or override existing datasources) by adding the | |
* appropriate file to app/Model/Datasource/Database. Datasources should be named 'MyDatasource.php', | |
* | |
* | |
* persistent => true / false | |
* Determines whether or not the database should use a persistent connection | |
* | |
* host => | |
* the host you connect to the database. To add a socket or port number, use 'port' => # | |
* | |
* prefix => | |
* Uses the given prefix for all the tables in this database. This setting can be overridden | |
* on a per-table basis with the Model::$tablePrefix property. | |
* | |
* schema => | |
* For Postgres/Sqlserver specifies which schema you would like to use the tables in. Postgres defaults to 'public'. For Sqlserver, it defaults to empty and use | |
* the connected user's default schema (typically 'dbo'). | |
* | |
* encoding => | |
* For MySQL, Postgres specifies the character encoding to use when connecting to the | |
* database. Uses database default not specified. | |
* | |
* unix_socket => | |
* For MySQL to connect via socket specify the `unix_socket` parameter instead of `host` and `port` | |
*/ | |
class DATABASE_CONFIG { | |
public $default = null; | |
public $dev = array( | |
//put database config here | |
); | |
public $test = array( | |
//put database config here | |
); | |
public $prod = array( | |
//put database config here | |
); | |
public function __construct(){ | |
App::uses('Folder', 'Utility'); | |
//if file named USE_DATABASE_CONFIG_name exists, use DATABASE_CONFIG.name as default config | |
//if multiple USE_DATABASE_CONFIG_* files found, use the first one. | |
$dir_path = ROOT . DS . APP_DIR . DS . 'Config' . DS; | |
$dir = new Folder($dir_path); | |
$f = $dir->find('USE_DATABASE_CONFIG_.*', true); | |
if (count($f)<=0) { | |
//using default(dev) setting if USE_DATABASE_CONFIG_* is not found. | |
$this->default = $this->dev; | |
return; | |
} else { | |
//using default(dev) setting if USE_DATABASE_CONFIG_* is not found. | |
//fetch config name | |
ereg('USE_DATABASE_CONFIG_(.*)', $f[0], $ret); | |
$config_name = $ret[1]; | |
if (isset($this->{$config_name})) { | |
$this->default = $this->{$config_name}; | |
} else { | |
//use default(dev) configuration if accoumpanied configuration is not found | |
$this->default = $this->dev; | |
} | |
return; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment