Soo...ich hab mich mal wieder dran gesetzt eine Klasse zu schreiben um mich noch etwas in OOP einzuarbeiten...
Ich möchte meine Kentnisse in OOP erweitern bzw. verbessern.
Diesmal hab ich mich für einen Template Parser entschieden.
Nun wollte ich mal wissen was ich da noch besser machen kann bzw. ob ich da totalen Mist gebaut hab.
Hier mal der Code:
Die Klasse ist jetz nicht so der Brenner...ich weiß...deshalb wollt ich mal ein paar Vorschläge haben, was sich an ihr noch verbessern lässt.
Danke schonmal im vorraus.
//edit: neue Funktionen eingefügt. Man kann jetzt das geparsde Template speichern. Es gibt ein DebugMode und ErrorReport.
greetz
daddz
Ich möchte meine Kentnisse in OOP erweitern bzw. verbessern.
Diesmal hab ich mich für einen Template Parser entschieden.
Nun wollte ich mal wissen was ich da noch besser machen kann bzw. ob ich da totalen Mist gebaut hab.
Hier mal der Code:
PHP:
class templateParser {
private $sTemplate;
private $aCells;
private $sParsed;
private $sResult;
private $bDebugMode;
private $bErrorReport;
public function templateParser() {
$this->sTemplate = "";
$this->aCells = array();
$this->sParsed = NULL;
$this->sResult = "";
$this->bDebugMode = false;
$this->bErrorReport = true;
}
public function parseTpl() {
if(!empty($this->sTemplate)) {
$this->sParsed = file($this->sTemplate);
foreach($this->aCells as $key => $element) {
$this->sParsed = preg_replace("#{[[:space:]]*?(".$key."){1,}?[[:space:]]*?}#si", $element, $this->sParsed);
}
$this->sResult = implode("", $this->sParsed);
if($this->bDebugMode) {
echo "Template <b>".$this->sTemplate."</b> successfully parsed.<br />";
}
return $this->sResult;
}
else {
if($this->bErrorReport) {
echo "Template isn´t set.<br />";
}
return false;
}
}
public function saveParsedToFile($sFilename, $bOverwrite = false) {
if((file_exists($sFilename) && $bOverwrite) OR !file_exists($sFilename)) {
if($hFile = fopen($sFilename, "w+")) {
$sParsed = $this->parseTpl();
fwrite($hFile, $sParsed);
fclose($hFile);
if($this->bDebugMode) {
echo "Template successfully saved to <b>".$sFilename."</b>.<br />";
}
return true;
}
else {
if($this->bErrorReport) {
echo "Unable to open file <b>".$sFilename."</b>.<br />";
}
return false;
}
}
else {
if($this->bErrorReport) {
echo "File <b>".$sFilename."</b> already exists.<br />";
}
return false;
}
}
public function addCell($sCells, $sTarget) {
if(!array_key_exists($sCells, $this->aCells)) {
$this->aCells[strtoupper($sCells)] = $sTarget;
if($this->bDebugMode) {
echo "Successfully added cell <b>".$sCells."</b> with target <b>".$sTarget."</b>.<br />";
}
return true;
}
else {
if($this->bErrorReport) {
echo "Cell <b>".$sCells."</b> is already set.<br />";
}
return false;
}
}
public function setTpl($sTemplate) {
if(is_file($sTemplate) && is_readable($sTemplate)) {
$this->sTemplate = $sTemplate;
if($this->bDebugMode) {
echo "Template <b>".$sTemplate."</b> is a file and readable.<br />";
}
return true;
}
else {
if($this->bErrorReport) {
echo "The template <b>".$sTemplate."</b> doesn´t exists.<br />";
}
return false;
}
}
public function getTpl() {
return $this->sTemplate;
}
public function getCells() {
return $this->aCells;
}
public function setDebugMode($bMode) {
if(is_bool($bMode)) {
$this->bDebugMode = $bMode;
if($this->bDebugMode) {
echo "DebugMode successfully set to<b>".$bMode."</b>.<br />";
}
return true;
}
else {
if($this->bErrorReport) {
echo "Couldn´t set DebugMode to <b>".$bMode."</b>.<br />";
}
return false;
}
}
public function setErrorReport($bMode) {
if(is_bool($bMode)) {
$this->bErrorReport = $bMode;
if($this->bDebugMode) {
echo "ErrorReport successfully set to<b>".$bMode."</b>.<br />";
}
return true;
}
else {
if($this->bErrorReport) {
echo "Couldn´t set ErrorReport to <b>".$bMode."</b>.<br />";
}
return false;
}
}
}
Danke schonmal im vorraus.
//edit: neue Funktionen eingefügt. Man kann jetzt das geparsde Template speichern. Es gibt ein DebugMode und ErrorReport.
greetz
daddz
Zuletzt bearbeitet: