Browse Source

The 'default' config for Configure class is now auto created on first use if not already created.

ADmad 14 years ago
parent
commit
08026e5828
2 changed files with 23 additions and 1 deletions
  1. 9 1
      lib/Cake/Core/Configure.php
  2. 14 0
      lib/Cake/Test/Case/Core/ConfigureTest.php

+ 9 - 1
lib/Cake/Core/Configure.php

@@ -287,6 +287,9 @@ class Configure {
  *
  * `Configure::load('setup', 'default');`
  *
+ * If using `default` config and no reader has been configured for it yet,
+ * one will be automatically created using PhpReader
+ *
  * @link http://book.cakephp.org/view/929/load
  * @param string $key name of configuration resource to load.
  * @param string $config Name of the configured reader to use to read the resource identified by $key.
@@ -296,7 +299,12 @@ class Configure {
  */
 	public static function load($key, $config = 'default', $merge = true) {
 		if (!isset(self::$_readers[$config])) {
-			return false;
+			if ($config === 'default') {
+				App::uses('PhpReader', 'Configure');
+				self::$_readers[$config] = new PhpReader();
+			} else {
+				return false;
+			}
 		}
 		$values = self::$_readers[$config]->read($key);
 

+ 14 - 0
lib/Cake/Test/Case/Core/ConfigureTest.php

@@ -192,6 +192,20 @@ class ConfigureTest extends CakeTestCase {
 	}
 
 /**
+ * test load method for default config creation
+ *
+ * @return void
+ */
+	public function testLoadDefaultConfig() {
+		try {
+			Configure::load('non_existing_configuration_file');
+		} catch (Exception $e) {
+			$result = Configure::configured('default');
+			$this->assertTrue($result);
+		}
+	}
+
+/**
  * test load with merging
  *
  * @return void