Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Backport Configure::consume() to 2.x
  • Loading branch information
euromark committed Dec 23, 2014
1 parent 839ef73 commit 5153025
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
24 changes: 24 additions & 0 deletions lib/Cake/Core/Configure.php
Expand Up @@ -190,6 +190,30 @@ public static function read($var = null) {
return Hash::get(self::$_values, $var);
}

/**
* Used to read and delete a variable from Configure.
*
* This is primarily used during bootstrapping to move configuration data
* out of configure into the various other classes in CakePHP.
*
* @param string $var The key to read and remove.
* @return array|null
*/
public static function consume($var) {
$simple = strpos($var, '.') === false;
if ($simple && !isset(self::$_values[$var])) {
return null;
}
if ($simple) {
$value = self::$_values[$var];
unset(self::$_values[$var]);
return $value;
}
$value = Hash::get(self::$_values, $var);
self::$_values = Hash::remove(self::$_values, $var);
return $value;
}

/**
* Returns true if given variable is set in Configure.
*
Expand Down
20 changes: 20 additions & 0 deletions lib/Cake/Test/Case/Core/ConfigureTest.php
Expand Up @@ -148,6 +148,26 @@ public function testWrite() {
$this->assertEquals('4', $result);
}

/**
* Test the consume method.
*
* @return void
*/
public function testConsume() {
$this->assertNull(Configure::consume('DoesNotExist'), 'Should be null on empty value');
Configure::write('Test', ['key' => 'value', 'key2' => 'value2']);

$result = Configure::consume('Test.key');
$this->assertEquals('value', $result);

$result = Configure::read('Test.key2');
$this->assertEquals('value2', $result, 'Other values should remain.');

$result = Configure::consume('Test');
$expected = ['key2' => 'value2'];
$this->assertEquals($expected, $result);
}

/**
* test setting display_errors with debug.
*
Expand Down

0 comments on commit 5153025

Please sign in to comment.