/** * Returns a variable in a fashion that is directly usable by PHP. * * @param mixed $o The item to be. * @param bool $remove_empty Default: "false". * @param int $lev Default: "1". * * @return mixed */ public static function export($o, $remove_empty = false, $lev = 1) { $st = ''; if (is_object($o) && ($cls = get_class($o)) && $cls !== 'stdClass') { $st .= "Object " . get_class($o) . PHP_EOL; } if (is_object($o) || is_array($o)) { $is_assoc = is_object($o) || \bbn\tools::is_assoc($o); $st .= $is_assoc ? '{' : '['; $st .= PHP_EOL; foreach ($o as $k => $v) { if ($remove_empty && (is_string($v) && empty($v) || is_array($v) && count($v) === 0)) { continue; } $st .= str_repeat(' ', $lev); if ($is_assoc) { $st .= (is_string($k) ? "'" . \bbn\str\text::escape_squote($k) . "'" : $k) . ": "; } if (is_array($v)) { $st .= self::export($v, $remove_empty, $lev + 1); } else { if (is_object($v)) { $cls = get_class($v); if ($cls === 'stdClass') { $st .= self::export($v, $remove_empty, $lev + 1); } else { $st .= "Object {$cls}"; } } else { if ($v === 0) { $st .= '0'; } else { if (is_null($v)) { $st .= 'null'; } else { if (is_bool($v)) { $st .= $v === false ? 'false' : 'true'; } else { if (is_int($v) || is_float($v)) { $st .= $v; } else { if (!$remove_empty || !empty($v)) { $st .= "'" . \bbn\str\text::escape_squote($v) . "'"; } } } } } } } $st .= ',' . PHP_EOL; } $st .= str_repeat(' ', $lev - 1); $st .= $is_assoc ? '}' : ']'; return $st; } return $o; }