note 52188 added to function.var-export

From: Date: Sat, 23 Apr 2005 18:47:25 +0000
Subject: note 52188 added to function.var-export
Groups: php.notes 
Request: Send a blank email to php-notes+get-88453@lists.php.net to get a copy of this message
Ok, I am posting version 2 of the _var_export() script. The original script works ok when an array is passed, but if it contained objects, they would not be exported (it would simply put a NULL in its place and move on). <? function _var_export($var, $return=false) { //v2 $object_tree = array("\$this"); $object_index = 0; $class_code = ""; $init_code = ""; if (!function_exists("_var_export_")) { function _var_export_($var, &$object_tree, &$object_index, &$class_code, &$init_code, $indent="") { if (is_object($var)) { $class_name = "_".get_class($var)."_"; // change class name to remove conflict with ogirinal class if ($class_code == "") { $class_code = "new $class_name();\r\nclass $class_name {\r\n"; foreach ($var as $key => $value) { $object_tree[++$object_index] = "->{$key}"; $class_code .= " var \$$key = "._var_export_($value, $object_tree, $object_index, $class_code, $init_code, " ").";\r\n"; $object_index--; } $output = rtrim($output, ";\r\n")."\r\n$indent)\r\n"; } else { $output = "NULL /*(object)$class_name*/"; foreach ($var as $key => $value) { $object_tree[++$object_index] = "->{$key}"; $init_code_tmp .= " ".implode(array_slice($object_tree,0,$object_index),"")."->$key = "._var_export_($value, $object_tree, $object_index, $class_code, $init_code, " ").";\r\n"; $object_index--; } $init_code = $init_code_tmp.$init_code; return $output; } if ($init_code != "") $class_code .= "\r\n function $class_name() {\r\n$init_code }\r\n"; $class = true; $class_code .= "}"; return $class_code; } elseif (is_array($var)) { if ($class_code == "") { $class_code = " "; // so we dont start a class export $object_tree[0] = "\$_array_init_"; $output = "&{$object_tree[0]}; ({$object_tree[0]} = array (\r\n"; $close_array = true; } else $output = "array (\r\n"; foreach ($var as $key => $value) { $object_tree[++$object_index] = "[$key]"; $output .= "$indent '$key' => "._var_export_($value, $object_tree, $object_index, $class_code, $init_code, "$indent ").",\r\n"; $object_index--; } $output = rtrim($output, ",\r\n")."\r\n$indent)"; if ($close_array) { $init_code = rtrim(");".rtrim("\r\n".$init_code,"\r\n"), ";"); // make sure we don't end wtih ';' $output .= $init_code; } return $output; } elseif (is_string($var) || $var == "") { $output = "\"".addcslashes($var, "\0..\37\"@\@\177..\377")."\""; return $output; } elseif (is_bool($var)) { $output = ($var ? 'TRUE' : 'FALSE'); return $output; } else { return $var; } } } $output = _var_export_($var, $object_tree, $object_index, $class_code, $init_code); if ($return) return $output; echo $output; } ?> Again, if it works, let me know! :) ---- Manual Page -- http://www.php.net/manual/en/function.var-export.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+52188 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+52188&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+52188&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+52188&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+52188&report=yes&reason=useless Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+52188&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+52188&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#88453) next »