Hi
ich hab mir eine kleine Tremplateklasse geschrieben.
was haltet ihr davon und warum funktioniert sie nicht wenn ich arrays nur mit einem {/array} beenden will?
ich hab mir eine kleine Tremplateklasse geschrieben.
PHP-Code:
<?
error_reporting(E_ALL);
class template {
private $content;
private $teile = array();
function assign($temname, $str) {
$number = count($this->teile);
$this->teile[$number]['temname'] = $temname;
$this->teile[$number]['str'] = $str;
}
function display($file, $typ = 'file') {
$this->datei($file, $typ);
$this->chose();
echo $this->content;
$this->content = '';
}
function gimme($file, $typ = 'file') {
$this->datei($file, $typ);
$this->chose();
$foobar = $this->content;
$this->content = '';
return $foobar;
}
function datei($file, $typ) {
if($typ != 'file') {
$this->content = $file;
} else {
$this->content = file_get_contents($file);
}
}
function chose() {
foreach($this->teile as $teil) {
if(is_array($teil['str'])) {
$this->arr($teil['temname'], $teil['str']);
} else {
$this->str($teil['temname'], $teil['str']);
}
}
$this->teile = array();
}
function str($temname, $str) {
$this->content = str_replace('{'.$temname.'}', $str, $this->content);
}
function arr($temname, $arr) {
$foo = preg_replace('/.*?\{array:'.$temname.'\}(.*?)\{\/array:'.$temname.'\}.*?/Usim','$1',$this->content);
$foobar = '';
preg_match_all('/\{'.$temname.':(.+)\}/Usim', $foo, $array);
foreach($arr as $rr) {
$bar = '';
for($i = 0; $i < count($array[0]); $i++) {
$arrfile = $array[1][$i];
if (empty($bar)) {
$bar = str_replace($array[0][$i], $rr[$arrfile], $foo);
} else {
$bar = str_replace($array[0][$i], $rr[$arrfile], $bar);
}
}
$foobar .= $bar;
}
$this->content = preg_replace('/\{array:'.$temname.'\}.*?\{\/array:'.$temname.'\}/Usim',$foobar,$this->content);
}
}
?>
Kommentar