mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Update dump() to allow partial dumps.
This commit is contained in:
parent
6ba923d20f
commit
d43e0aa0db
3 changed files with 56 additions and 4 deletions
|
@ -281,23 +281,40 @@ class Configure {
|
||||||
/**
|
/**
|
||||||
* Dump data currently in Configure into $filename. The serialization format
|
* Dump data currently in Configure into $filename. The serialization format
|
||||||
* is decided by the config reader attached as $config. For example, if the
|
* is decided by the config reader attached as $config. For example, if the
|
||||||
* 'default' adapter is a PhpReader, the generated file will be a PHP configuration
|
* 'default' adapter is a PhpReader, the generated file will be a PHP
|
||||||
* file loadable by the PhpReader.
|
* configuration file loadable by the PhpReader.
|
||||||
|
*
|
||||||
|
* ## Usage
|
||||||
|
*
|
||||||
|
* Given that the 'default' reader is an instance of PhpReader.
|
||||||
|
* Save all data in Configure to the file `my_config.php`:
|
||||||
|
*
|
||||||
|
* `Configure::dump('my_config.php', 'default');`
|
||||||
|
*
|
||||||
|
* Save only the error handling configuration:
|
||||||
|
*
|
||||||
|
* `Configure::dump('error.php', 'default', array('Error', 'Exception');`
|
||||||
*
|
*
|
||||||
* @param string $key The identifier to create in the config adapter.
|
* @param string $key The identifier to create in the config adapter.
|
||||||
* This could be a filename or a cache key depending on the adapter being used.
|
* This could be a filename or a cache key depending on the adapter being used.
|
||||||
* @param string $config The name of the configured adapter to dump data with.
|
* @param string $config The name of the configured adapter to dump data with.
|
||||||
|
* @param array $keys The name of the top-level keys you want to dump.
|
||||||
|
* This allows you save only some data stored in Configure.
|
||||||
* @return boolean success
|
* @return boolean success
|
||||||
* @throws ConfigureException if the adapter does not implement a `dump` method.
|
* @throws ConfigureException if the adapter does not implement a `dump` method.
|
||||||
*/
|
*/
|
||||||
public static function dump($key, $config = 'default') {
|
public static function dump($key, $config = 'default', $keys = array()) {
|
||||||
if (empty(self::$_readers[$config])) {
|
if (empty(self::$_readers[$config])) {
|
||||||
throw new ConfigureException(__d('cake', 'There is no "%s" adapter.', $config));
|
throw new ConfigureException(__d('cake', 'There is no "%s" adapter.', $config));
|
||||||
}
|
}
|
||||||
if (!method_exists(self::$_readers[$config], 'dump')) {
|
if (!method_exists(self::$_readers[$config], 'dump')) {
|
||||||
throw new ConfigureException(__d('cake', 'The "%s" adapter, does not have a dump() method.', $config));
|
throw new ConfigureException(__d('cake', 'The "%s" adapter, does not have a dump() method.', $config));
|
||||||
}
|
}
|
||||||
return (bool)self::$_readers[$config]->dump($key, self::$_values);
|
$values = self::$_values;
|
||||||
|
if (!empty($keys) && is_array($keys)) {
|
||||||
|
$values = array_intersect_key($values, array_flip($keys));
|
||||||
|
}
|
||||||
|
return (bool)self::$_readers[$config]->dump($key, $values);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -386,4 +386,23 @@ class ConfigureTest extends CakeTestCase {
|
||||||
@unlink(TMP . 'config_test.php');
|
@unlink(TMP . 'config_test.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test dumping only some of the data.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public function testDumpPartial() {
|
||||||
|
Configure::config('test_reader', new PhpReader(TMP));
|
||||||
|
|
||||||
|
$result = Configure::dump('config_test.php', 'test_reader', array('Error'));
|
||||||
|
$this->assertTrue($result > 0);
|
||||||
|
$result = file_get_contents(TMP . 'config_test.php');
|
||||||
|
$this->assertContains('<?php', $result);
|
||||||
|
$this->assertContains('$config = ', $result);
|
||||||
|
$this->assertContains('Error', $result);
|
||||||
|
$this->assertNotContains('debug', $result);
|
||||||
|
|
||||||
|
@unlink(TMP . 'config_test.php');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
16
lib/Cake/Test/test_app/Config/test.php
Normal file
16
lib/Cake/Test/test_app/Config/test.php
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
$config = array (
|
||||||
|
'One' =>
|
||||||
|
array (
|
||||||
|
'two' => 'value',
|
||||||
|
'three' =>
|
||||||
|
array (
|
||||||
|
'four' => 'value four',
|
||||||
|
),
|
||||||
|
'null' => NULL,
|
||||||
|
),
|
||||||
|
'Asset' =>
|
||||||
|
array (
|
||||||
|
'timestamp' => 'force',
|
||||||
|
),
|
||||||
|
);
|
Loading…
Reference in a new issue