Hallo zusammen,
ich schreibe gerade aus Interesse eine "Template Engine".
Nur habe ich gerade ein Problem mit, ich tippe mal den Regular Expressions, der Rekursiven (Verschachtelten) Überprüfung der If-Conditions, diese greifen mehr oder weniger gar nicht.
Anbei mal die essentiel wichtigen Methoden für diese Aktion.
Die Methode ConditionHelper ist eigentlich nur für folgendes zuständig:
Wenn ich die If-Conditions normal schreibe, funktioniert das ganze.
Gibs da evtl. einen Trick?
LG Toby
ich schreibe gerade aus Interesse eine "Template Engine".
Nur habe ich gerade ein Problem mit, ich tippe mal den Regular Expressions, der Rekursiven (Verschachtelten) Überprüfung der If-Conditions, diese greifen mehr oder weniger gar nicht.
Anbei mal die essentiel wichtigen Methoden für diese Aktion.
PHP-Code:
protected function parseIfConditions()
{
$sPattern = '#if \(\"(.*?)\" (==|!=|<|>|<=|>={1,2}) \"(.*?)\"\) {(.*?)([^\\\])}#is';
return preg_replace_callback($sPattern, array($this, 'parseIfCallback'), $this->sComputedTemplate);
}
protected function parseIfCallback($aResults)
{
if ($this->ConditionHelper($aResults)) {
$this->sComputedTemplate = str_replace($aResults[0], $aResults[4], $this->sComputedTemplate);
} else {
$this->sComputedTemplate = str_replace($aResults[0], '', $this->sComputedTemplate);
}
}
Die Methode ConditionHelper ist eigentlich nur für folgendes zuständig:
PHP-Code:
protected function ConditionHelper($aResults)
{
if ($aResults[2] == "==")
$bResult = ($aResults[1] == $aResults[3] ? true : false);
if ($aResults[2] == "!=")
$bResult = ($aResults[1] != $aResults[3] ? true : false);
if ($aResults[2] == ">=")
$bResult = ($aResults[1] >= $aResults[3] ? true : false);
if ($aResults[2] == "<=")
$bResult = ($aResults[1] <= $aResults[3] ? true : false);
if ($aResults[2] == ">")
$bResult = ($aResults[1] > $aResults[3] ? true : false);
if ($aResults[2] == "<")
$bResult = ($aResults[1] < $aResults[3] ? true : false);
return $bResult;
}
Wenn ich die If-Conditions normal schreibe, funktioniert das ganze.
Gibs da evtl. einen Trick?
LG Toby
Kommentar