Current File : //opt/RZphp74/includes/Var_Dump/Renderer/XML.php |
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2006 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 3.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available through the world-wide-web at the following url: |
// | http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Frederic Poeydomenge <fpoeydomenge@free.fr> |
// +----------------------------------------------------------------------+
/**
* Wrapper for the var_dump function.
*
* " The var_dump function displays structured information about expressions
* that includes its type and value. Arrays are explored recursively
* with values indented to show structure. "
*
* The Var_Dump class captures the output of the var_dump function,
* by using output control functions, and then uses external renderer
* classes for displaying the result in various graphical ways :
* simple text, HTML/XHTML text, HTML/XHTML table, XML, ...
*
* @category PHP
* @package Var_Dump
* @author Frederic Poeydomenge <fpoeydomenge@free.fr>
* @copyright 1997-2006 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id: XML.php 233111 2007-04-02 09:38:10Z fredericpoeydome $
* @link http://pear.php.net/package/Var_Dump
*/
/**
* Include the base class for all renderers
*/
require_once 'Var_Dump/Renderer/Common.php';
/**
* A concrete renderer for Var_Dump
*
* Returns a representation of a variable in XML
* DTD : PEARDIR/data/Var_Dump/renderer-xml.dtd
*
* @category PHP
* @package Var_Dump
* @author Frederic Poeydomenge <fpoeydomenge@free.fr>
* @copyright 1997-2006 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id: XML.php 233111 2007-04-02 09:38:10Z fredericpoeydome $
* @link http://pear.php.net/package/Var_Dump
*/
class Var_Dump_Renderer_XML extends Var_Dump_Renderer_Common
{
/**
* Class constructor.
*
* @param array $options Parameters for the rendering.
* @access public
*/
function Var_Dump_Renderer_XML($options = array())
{
$this->setOptions($options);
}
/**
* Returns the string representation of a variable
*
* @return string The string representation of the variable.
* @access public
*/
function toString()
{
if (count($this->family) == 1) {
return $this->_toString_Single();
} else {
return $this->_toString_Array();
}
}
/**
* Returns the string representation of a single variable
*
* @return string The string representation of a single variable.
* @access private
*/
function _toString_Single()
{
return
'<element>' .
'<type>' . htmlspecialchars($this->type[0]) . '</type>' .
'<value>' . htmlspecialchars($this->value[0]) . '</value>' .
'</element>';
}
/**
* Returns the string representation of a multiple variable
*
* @return string The string representation of a multiple variable.
* @access private
*/
function _toString_Array()
{
$txt = '';
$counter = count($this->family);
$depth = 0;
for ($c = 0 ; $c < $counter ; $c++) {
switch ($this->family[$c]) {
case VAR_DUMP_START_GROUP :
if ($this->depth[$c] > 0) {
$txt .=
$this->_spacer($depth) . '<type>group</type>' . "\n" .
$this->_spacer($depth++) . '<value>' . "\n";
}
$txt .=
$this->_spacer($depth) .
'<group caption="' . htmlspecialchars($this->value[$c]) .
'">' . "\n";
break;
case VAR_DUMP_FINISH_GROUP :
$txt .= $this->_spacer($depth) . '</group>' . "\n";
if ($this->depth[$c] > 0) {
$txt .=
$this->_spacer(--$depth) . '</value>' . "\n" .
$this->_spacer(--$depth) . '</element>' . "\n";
$depth--;
}
break;
case VAR_DUMP_START_ELEMENT_NUM :
case VAR_DUMP_START_ELEMENT_STR :
$txt .=
$this->_spacer(++$depth) . '<element>' . "\n" .
$this->_spacer(++$depth) . '<key>' .
htmlspecialchars($this->value[$c]) .
'</key>' . "\n";
break;
case VAR_DUMP_FINISH_ELEMENT :
case VAR_DUMP_FINISH_STRING :
$txt .=
$this->_spacer($depth) . '<type>' .
htmlspecialchars($this->type[$c]) .
'</type>' . "\n".
$this->_spacer($depth--) . '<value>' .
htmlspecialchars($this->value[$c]) .
'</value>' . "\n" .
$this->_spacer($depth--) . '</element>' . "\n";
break;
}
}
return $txt;
}
/**
* Returns a spacer string to prefix the line
*
* @param integer $depth Depth level.
* @return string Spacer string
* @access private
*/
function _spacer($depth) {
return str_repeat(' ', $depth << 1);
}
}
?>