Dzisiaj mi się nudzilo i postanowilem napisac klase ktora parsowala by HTML jednak gdy tylko includne plik z klasa strona zaczyna sie wczytywac i w sumie na tym konczy - znaczy caly czas sie wczytuje i nic nie robi.
Plik classy:
<?php
class tplEngine {
private $variable,$cache,$ids,$tplDir;
public function __construct($tplDir) {
$this->tplDir=$tplDir;
}
public function set($name,$value) {
$this->variable[$name]=$value;
}
public function clear() {
$this->variable=array('tplDir'=>$this->tplDir);
}
public function showHTML($class,$id) {
if (eregi('[0-9]',$class)&&eregi('[0-9]',$id)&&isset($this->cache[$class][$id])) {
echo $this->cache[$class][$id];
return True;
}
else { echo 'SHOWTPL ERROR!'; return False; }
}
public function parseTPL($tplFile,$class) {
//Sprawdzanie czy plik instnieje
$parseFile=$this->tplDir.$tplFile.'.tpl';
if (eregi('[0-9]',$class)&&eregi('[0-9a-zA-Z]',$tplFile)&&file_exists($parseFile)) {
$parseSize=filesize($parseFile);
if ($parseSize>0) {
$tplF=fopen($parseFile,'r');
$tplC=fread($tplF,$parseSize);
preg_match_all("#\{\$(.*?)\}#", $parse, $i0); //Wyszukiwanie zmiennych do parsowania
$i1=count($i0);$i2=0;
while ($i2<$i1) {
$tplVar=$i0[0][$i2];
$parsed=preg_replace('#\{\$'.$tplVar.'\}#',$this->variable[$tplVar],$parsed);
$i2++;
}
fclose($tplF);
$this->ids[$class]++;
$i3=$this->ids[$class];
$this->cache[$class][$i3];
unset($parseFile,$class,$tplFile,$parseSize,$tplF,$tplC,$tplVar,$parsed,$i0,$i1,$i2);//Kasowanie zmiennych
$this->clear();
return $i3;
}
}
else { return 'PARSETPL FILE NOT EXIST!'; }
}
}
?>
-------------EDIT----------- Juz wszystko ok0, dziekuje za pomoc:D poczatkowo byl blad w klasie parsujacej, ale gdy zostal naprawiony odezwal sie bug w klasie ladujacej ustawienia; Zeby nie bylo zanim dodalem ten post zamiast
a od kiedy php wymaga deklarowania zmiennych przed ich wywołaniem?
Crop , ogólnie ta linia wygląda jakoś strasznie, co ona w ogóle miała robić?
P.S.
W php występują dwa typy wyrażeń regularnych, PCRE i POSIX, Ty mieszasz strasznie jedne i drugie, warto to przemyśleć, zwłaszcza, że te POSIXowe wylatują standardowo z php przy okazji ver. 6
To uruchamia ona klase tplEngine ustawiajac w niej zmienna $tplDir na wartosc ze stalej tplsDir i z wartosci pobranej z bazy danych konkretnie ustawienia i pobranie wartosci ustawienia template.