From aa73d33cf68883c1a5faa5d1ce1463b80cc2af2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Thu, 20 Jul 2006 13:47:07 +0000 Subject: [PATCH] Implement own minimalistic var_export and drop the one from PEAR. --- ChangeLog | 4 + libraries/compat/var_export.php | 145 -------------------------------- scripts/setup.php | 49 +++++++++-- 3 files changed, 45 insertions(+), 153 deletions(-) delete mode 100644 libraries/compat/var_export.php diff --git a/ChangeLog b/ChangeLog index 707abd667..76bb948e3 100755 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,10 @@ $Id$ $Source$ +2006-07-20 Michal Čihař + * libraries/compat/var_export.php: Dropped due to license problems. + * scripts/setup.php: Implement own var_export. + 2006-07-19 Marc Delisle * browse_foreigners.php: bug #1525393, no page selector in foreign key browse page diff --git a/libraries/compat/var_export.php b/libraries/compat/var_export.php deleted file mode 100644 index 613b0ccdf..000000000 --- a/libraries/compat/var_export.php +++ /dev/null @@ -1,145 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: var_export.php,v 1.18 2006/05/22 00:09:42 arpad Exp $ - - -/** - * Replace var_export() - * - * @category PHP - * @package PHP_Compat - * @link http://php.net/function.var_export - * @author Aidan Lister - * @version $Revision: 1.18 $ - * @since PHP 4.2.0 - * @require PHP 4.0.0 (user_error) - */ -function php_compat_var_export($var, $return = false, $level = 0, $inObject = false) -{ - // Init - $indent = ' '; - $doublearrow = ' => '; - $lineend = ",\n"; - $stringdelim = '\''; - $newline = "\n"; - $find = array(null, '\\', '\''); - $replace = array('NULL', '\\\\', '\\\''); - $out = ''; - - // Indent - $level++; - for ($i = 1, $previndent = ''; $i < $level; $i++) { - $previndent .= $indent; - } - - $varType = gettype($var); - - // Handle object indentation oddity - if ($inObject && $varType != 'object') { - $previndent = substr($previndent, 0, -1); - } - - - // Handle each type - switch ($varType) { - // Array - case 'array': - if ($inObject) { - $out .= $newline . $previndent; - } - $out .= 'array (' . $newline; - foreach ($var as $key => $value) { - // Key - if (is_string($key)) { - // Make key safe - $key = str_replace($find, $replace, $key); - $key = $stringdelim . $key . $stringdelim; - } - - // Value - if (is_array($value)) { - $export = php_compat_var_export($value, true, $level); - $value = $newline . $previndent . $indent . $export; - } else { - $value = php_compat_var_export($value, true, $level); - } - - // Piece line together - $out .= $previndent . $indent . $key . $doublearrow . $value . $lineend; - } - - // End string - $out .= $previndent . ')'; - break; - - // String - case 'string': - // Make the string safe - for ($i = 0, $c = count($find); $i < $c; $i++) { - $var = str_replace($find[$i], $replace[$i], $var); - } - $out = $stringdelim . $var . $stringdelim; - break; - - // Number - case 'integer': - case 'double': - $out = (string) $var; - break; - - // Boolean - case 'boolean': - $out = $var ? 'true' : 'false'; - break; - - // NULLs - case 'NULL': - case 'resource': - $out = 'NULL'; - break; - - // Objects - case 'object': - // Start the object export - $out = $newline . $previndent; - $out .= get_class($var) . '::__set_state(array(' . $newline; - // Export the object vars - foreach(get_object_vars($var) as $key => $value) { - $out .= $previndent . $indent . ' ' . $stringdelim . $key . $stringdelim . $doublearrow; - $out .= php_compat_var_export($value, true, $level, true) . $lineend; - } - $out .= $previndent . '))'; - break; - } - - // Method of output - if ($return === true) { - return $out; - } else { - echo $out; - } -} - - -// Define -if (!function_exists('var_export')) { - function var_export($var, $return = false) - { - return php_compat_var_export($var, $return); - } -} diff --git a/scripts/setup.php b/scripts/setup.php index 6fbf7ccb6..594bfa8b7 100644 --- a/scripts/setup.php +++ b/scripts/setup.php @@ -9,9 +9,6 @@ define( 'PMA_MINIMUM_COMMON', TRUE ); chdir('..'); require_once('./libraries/common.lib.php'); -// var_export for older PHP -require_once('./libraries/compat/var_export.php'); - // Grab configuration defaults $PMA_Config = new PMA_Config(); @@ -411,6 +408,39 @@ function get_server_name($val, $id = FALSE) { return $ret; } + +/** + * Exports variable to PHP code, very limited version of var_export + * + * @param string data to export + * + * @see var_export + * + * @return string PHP code containing variable value + */ +function PMA_var_export($input) { + $output = ''; + if (is_null($input)) { + $output .= 'NULL'; + } elseif (is_array($input)) { + $output .= "array (\n"; + foreach($input as $key => $value) { + $output .= PMA_var_export($key) . ' => ' . PMA_var_export($value); + $output .= ",\n"; + } + $output .= ')'; + } elseif (is_string($input)) { + $output .= '\'' . addslashes($input) . '\''; + } elseif (is_int($input) || is_double($input)) { + $output .= (string) $input; + } elseif (is_bool($input)) { + $output .= $input ? 'true' : 'false'; + } else { + die('Unknown type for PMA_var_export: ' . $input); + } + return $output; +} + /** * Creates configuration code for one variable * @@ -432,23 +462,26 @@ function get_cfg_val($name, $val) { $ret .= $name . " = array(\n"; } else { // Something unknown... - $ret .= $name. ' = ' . var_export($val, TRUE) . ";\n"; + $ret .= $name. ' = ' . PMA_var_export($val) . ";\n"; break; } } if ($type == 'string') { - $ret .= $name. "['$k'] = " . var_export($v, TRUE) . ";\n"; + $ret .= get_cfg_val($name . "['$k']", $v); } elseif ($type == 'int') { - $ret .= " " . var_export($v, TRUE) . ",\n"; + $ret .= " " . PMA_var_export($v) . ",\n"; } } - if ($type == 'int') { + if (!isset($type)) { + /* Empty array */ + $ret .= $name . " = array();\n"; + } elseif ($type == 'int') { $ret .= ");\n"; } $ret .= "\n"; unset($type); } else { - $ret .= $name . ' = ' . var_export($val, TRUE) . ";\n"; + $ret .= $name . ' = ' . PMA_var_export($val) . ";\n"; } return $ret; }