Code : Tout sélectionner
Catchable fatal error: Object of class XMLPrinter could not be converted to string in /lib_xml.php on line 10Code : Tout sélectionner
$$this->stack=array();Code : Tout sélectionner
<?
class XMLPrinter
{
//public part
function XMLPrinter()
{
$this->encoding="ISO-8859-1";
[B]$$this->stack=array();[/B]
}
function header()
{
echo "<?xml version=\"1.0\" encoding=\"$this->encoding\"?>\n";
}
function pushNode($nodename,$attributes="")
{
echo $this->spaces()."<$nodename".$this->args2string($attributes).">\n";
$this->push($nodename);
}
function popNode($nodename)
{
$stacknode=$this->pop();
if ($stacknode!=$nodename)
{
$this->error("XmlPrinter: Poping Node: expecting '$stacknode' instead of '$nodename'");
}
echo $this->spaces()."</$nodename>\n";
}
function simpleNode($node,$value,$attributes="")
{
echo $this->spaces()."<$node".$this->args2string($attributes).">".$this->encode($value)."</$node>\n";
}
//private part
var $stack;
var $encoding;
function stackSize()
{
return count($this->stack);
}
function push($node)
{
$this->stack[$this->stackSize()]=$node;
}
function pop()
{
if ($this->stackSize()==0)
{
$this->error("XmlPrinter: Stack is empty");
}
$node=$this->stack[$this->stackSize()-1];
unset($this->stack[$this->stackSize()-1]);
return $node;
}
function args2string($args)
{
if (!$args)
return;
foreach ($args as $arg => $value)
{
$str .= " $arg=\"".$this->encode($value)."\"";
}
return $str;
}
function spaces()
{
$nb=$this->stackSize();
for ($i=0; $i<$nb; $i++)
{
$str .= " ";
}
return $str;
}
function error($msg)
{
$stacktrace=debug_backtrace();
foreach ($stacktrace as $call)
{
$file=$call['file'];
if (!strpos($file,"lib_xml.php"))
{
$line=$call['line'];
trigger_error("(called from $file:$line) $msg", E_USER_ERROR);
exit();
}
}
}
function encode($str)
{
return htmlspecialchars($str);
}
}
?>
Ben justement, dans ton code ce $$ n'a pas lieu d'être en fait. C'est ce qui m'a amené à te faire cette suggestion. ($this->stack est un tableau, et son accès en tant que nom de variable dans ce cas n'aurait aucun sens).Le site dont je parle a été codé par quelqu'un d'autre, il fonctionnait parfaitement à l'époque où il était en ligne (php4 en revanche, sachant que mon apache est php5).
Je viens de vérifier dans les sources, il y a bien $$
Serait-il possible que ce code avec $$ fonctionne en réalité mais que le problème vienne de la suite ? J'ai du mal à exprimer l'idée, ce que je veux dire c'est que peut-être qu'une configuration ailleurs empêche ce $$ de fonctionner. C'est sans doute tiré par les cheveux, et puis ça a l'air de bien marcher comme ça donc je pense que c'est ok.
en haut à gauche de ce sujet.