Hi, ich habe ein Problem mit einer Klasse, die ich gefunden habe.
Oder besser gesagt, habe ich ein Problem mit der Ausgabe.
Es ist eine Klasse, die eine Baumstruktur für ein Menü darstellen kann.
Leider wird die Ausgabe hier direkt an den Browser übergeben.
Ich bräuchte aber die Ausgabe in einer Variable. Die echo's ersetzen ist ja kein problem, aber wie ich den Wert von printf in eine Variable bekomme ist mir ehrlichgesagt schleierhaft. Ich habe schon nach einer Funktion gesucht, die die Ausgabe NICHT an den Browser schickt. Ich hoffe, dass mir jemand weiterhelfen mag.
Hier die Klasse:
Oder besser gesagt, habe ich ein Problem mit der Ausgabe.
Es ist eine Klasse, die eine Baumstruktur für ein Menü darstellen kann.
Leider wird die Ausgabe hier direkt an den Browser übergeben.
Ich bräuchte aber die Ausgabe in einer Variable. Die echo's ersetzen ist ja kein problem, aber wie ich den Wert von printf in eine Variable bekomme ist mir ehrlichgesagt schleierhaft. Ich habe schon nach einer Funktion gesucht, die die Ausgabe NICHT an den Browser schickt. Ich hoffe, dass mir jemand weiterhelfen mag.
Hier die Klasse:
PHP-Code:
<?php
class menu {
var $name;
var $items;
var $open;
var $closed;
var $indent;
function menu($name,
$open = '-',
$closed = '+',
$indent = ' '
)
{
$this->items = array();
$this->name = $name;
$this->open = $open;
$this->closed = $closed;
$this->indent = $indent;
}
function add($name, $href = "", $target = "") {
$n = count($this->items);
if (is_object($name)) {
$this->items[$n] = $name;
} else {
$this->items[$n]['name'] = $name;
$this->items[$n]['href'] = $href;
$this->items[$n]['target'] = $target;
}
}
function show($nest = 0) {
$urlname = strtr($this->name, ' ', '_');
$indent = '';
global $$urlname;
global $PHP_SELF;
global $QUERY_STRING;
if ($nest) {
$indent = str_repeat($this->indent, $nest);
}
if (isset($$urlname)) {
printf('%s<a href="%s?%s">%s</a><br>',
$indent . $this->open,
$PHP_SELF,
ereg_replace("{$urlname}=&", '', $QUERY_STRING),
$this->name);
echo "\n";
while (list(,$item) = each($this->items)) {
if (is_object($item)) {
$item->show($nest + 1);
} else {
printf('%s<a href="%s"%s>%s</a><br>',
$indent . $this->indent,
$item['href'],
(!empty($item['target']) ? ' target="' .
$item['target'] . '"'
: ''),
$item['name']);
echo "\n";
}
}
} else {
printf('%s<a href="%s?%s=&%s">%s</a><br>',
$indent . $this->closed,
$PHP_SELF,
$urlname, $QUERY_STRING,
$this->name);
echo "\n";
}
}
}
?>
Kommentar