Verbesserungsvorschläge für eine TemplateParser-Klasse

daddz

Mitglied
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:
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;
			
			}
		
		}
		
	}
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
 
Zuletzt bearbeitet:
Mh, vielleicht Blockweises Parsen eines Templates?
Und man kann, wenn einmal etwas ins Array geschrieben ist, es nicht mehr ändern? Vielleicht dafür noch ne Funktion? Und vielleicht die geparsten Templates optional speichern?
 
Wo liegt denn der Vorteil im blockweisen Parsen?
Mauri82123 hat gesagt.:
Und man kann, wenn einmal etwas ins Array geschrieben ist, es nicht mehr ändern? Vielleicht dafür noch ne Funktion?
Welches Array meinst du?
Mauri82123 hat gesagt.:
Und vielleicht die geparsten Templates optional speichern?
Das is ne gute Idee...werd ich gleich mal einbauen.

Eigentlich gings mir jetzt mehr um die Klasse an sich...aber solche Vorschläge sind auch gut. ;-)

greetz
daddz
 
*Thread_vor_dem_versinken_rett*

So...ich hab jetz mal den Vorschlag mit dem Speichern eingebaut und auch gleich mal ein DebugModus und ErrorReport hinzugefügt.
Was hab ich bitte vom blockweisen parsen?

greetz
daddz
 
Zurück