Fix re-numbering of values in exportVar()

Using array_merge resulted in values being re-indexed,
change how arrays are combined to preserve keys.

Fixes #2506
This commit is contained in:
mark_story 2012-01-24 20:52:43 -05:00
parent 11ed1e6ea5
commit 29514b08fb
2 changed files with 29 additions and 4 deletions

View file

@ -329,8 +329,21 @@ object(View) {
float => (float) 1.333
}
TEXT;
// $result = str_replace(array("\r\n", "\n"), "", $result);
// $expected = str_replace(array("\r\n", "\n"), "", $expected);
$result = str_replace(array("\r\n", "\n"), "", $result);
$expected = str_replace(array("\r\n", "\n"), "", $expected);
$this->assertEquals($expected, $result);
$data = array(
1 => 'Index one',
5 => 'Index five'
);
$result = Debugger::exportVar($data);
$expected = <<<TEXT
array(
(int) 1 => 'Index one',
(int) 5 => 'Index five'
)
TEXT;
$this->assertEquals($expected, $result);
}

View file

@ -496,13 +496,23 @@ class Debugger {
/**
* Export an array type object. Filters out keys used in datasource configuration.
*
* The following keys are replaced with ***'s
*
* - password
* - login
* - host
* - database
* - port
* - prefix
* - schema
*
* @param array $var The array to export.
* @param integer $depth The current depth, used for recursion tracking.
* @param integer $indent The current indentation level.
* @return string Exported array.
*/
protected static function _array(array $var, $depth, $indent) {
$var = array_merge($var, array_intersect_key(array(
$secrets = array(
'password' => '*****',
'login' => '*****',
'host' => '*****',
@ -510,7 +520,9 @@ class Debugger {
'port' => '*****',
'prefix' => '*****',
'schema' => '*****'
), $var));
);
$replace = array_intersect_key($secrets, $var);
$var = $replace + $var;
$out = "array(";
$n = $break = $end = null;