Buch gesucht, OOP / Templates

ja aber warum sollte man sich dann keine eigene kleine Klasse schreiben die alles beinhaltet was man braucht (meist sogar weniger als 6 funktionen)?

Wozu in eine Fremdeklasse einarbeiten?
 
Was spricht denn gegen Smarty? Es ist das wohl am meisten verwendetste Template-System im PHP-Sektor. xtcommerce verwendet es, in Drupal kann man es verwenden, Typo3 hat auch ein Plugin.

Wenn du grundsätzliche Infos haben willst, wirst du, egal welche TE nicht drum herum kommen, die Doku bzw. Tutorials dazu zu lesen.

Hier ein Beitrag in Wikipedia zu Smarty: http://de.wikipedia.org/wiki/Smarty
 
ja aber warum sollte man sich dann keine eigene kleine Klasse schreiben die alles beinhaltet was man braucht (meist sogar weniger als 6 funktionen)?

Wozu in eine Fremdeklasse einarbeiten?

Ganz einfach, für einen, der gerade damit anfängt, sich mit Templates auseinanderzusetzen, ist es schlichtweg ein schweres Unterfangen. Mal von der Umsetzung abgesehen sind auch sicherheitstechnische Fragen zu klären. Dann lieber an vorhandenem inspieren und damit experimentieren. Mal davon abgesehen muss man das Rad nicht immer neu erfinden, wenn es dafür eine sehr gute Schnittstelle gibt. Außer man ist Paranoiker, aber dann sollte man ohnehin vom Netzprogrammieren die Finger lassen, IMHO.
 
Kann man denn auf jeden Server Smarty installieren?
Wie einer meiner Vorredner schon gesagt hat: ja. Dadurch, das Smarty in PHP 4 geschrieben ist (es ist doch noch immer PHP 4, oder ?) läuft es praktisch (99,9 %) überall.
So habe ich auch gedacht, allerdings sind Templates durchaus nicht unpraktisch. Ich bin mir nicht sicher, da ich noch nicht viel damit gemacht habe, aber es scheint mir durchaus als eine Erleichterung und Vereinfacherung beim Programmieren.
Templates sind auch in allen modernen und portablen Webapplikationen Pflicht. Ich halte Smarty aber nur bedingt als Templatesystem geignet, weil es einfach überflüssig ist. Ich kann meine Variable durch {$foobar} ausgeben und durch <?php echo $foobar ?>. Ich kann auch meine If-Abfragen in Smartys Sprache schreiben oder in PHP. Nur muss ich für Smartys Sprache mich wieder durch endlos lange Anleitungen und Dokumentationen quälen. Da ist es mir lieber, wenn ich auf Smarty verzichte und es in PHP schreibe. Das tolle ist nämlich: Ich verwende Zend_View (ich bin etwas vom Zend Framework beindruckt ^^), ich schreibe meine Templates in PHP (und HTML natürlich) und kann sie dann genau wie bei Smarty parsen lassen, nur alles viel schneller als bei Smarty (siehe weiter unten).
Langsamer? Wie meinst du das? Es dauert länger, bis die Seite aufbaut oder wie?
Um die Seite zu erzeugen und die Variablen durch "richtige" PHP Variablen zu ersetzen, verwendet Smarty Reguläre Ausdrücke. Das ist natürlich langsamer als wenn alles schon in PHP dasteht, und nicht erst durch Smarty "geparst" werden muss. Vorallem bei vielen Variablen, und ein paar anderen Features von Smarty wirds wirklich lahm (Das gilt freilich nur bei einer gut besuchten Webseite. Bei 50 - 100 Besuchern am Tag wirds niemanden stören).
 
Die Smarty-Dokumentation habe ich mir durchgelesen, verstehe es soweit auch ganz gut, nur haben mich das hier und der Vorpost ziemlisch verunsichert. Smarty = langsam? Will ich ja eigentlich nich unbedingt..ein langsam-machendes Template-System.

Ich weiß, das ist eine dumme Frage, aber welche Template-Engine ist denn nun geeignet für mich? :/
 
deine eigene^^

ansonsten liste halt mal auf was du für funktionen brauchst
 
Soweit eigentlich nichts besonderes.

Abgesehen davon, dass ich viel mehr Funktionen bis dato auch nicht kenne, reichen mir die Funktionen um ein Template zu laden, Begriffe zu ersetzen und dann auszugeben.

[Smarty] assign(), display()

Allerdings spricht da jetzt der "Newbie" in mir :)
 
PHP:
<?php

class Template
{
	
	var $source;
	var $file;
	var $vars;
	var $result;
	var $dir = 'templates/';
	
	function Template($filename)
	{
		if (is_dir($dir))
		{
			$file = $this->tpldir.$filename;
		
			if(!is_file($file) || !is_readable($file))
			{
				die('Datei nicht vorhanden/lesbar.');
			}
		
			$this->source = implode(file($file));
		}
		else die('Kein Ordner.');
	}
	
	function assign($var, $value)
	{
		$this->vars[$var] = $value;
	}
	
	function parse()
	{
		foreach ($this->vars as $search => $replace)
		{
			$this->result = str_replace('{'.$search.'}', $replace, $this->source);
		}
		
		$this->vars = null;
	}
	
	function show()
	{
		echo $this->result;
	}
}
?>

so ähnlich kann sie aussehen keine ahnung ob die t hab sie grad kurz gebastelt.
das sind wenige funktionen und das reicht für das was du vorhast!
 
Zuletzt bearbeitet von einem Moderator:
Wuidedui O.O

Ist ja klasse =)

Funktioniert, jedoch nicht die "is_dir()"-Funktion, zeigt mir immer an "Kein Ordner".

Code:
$dir = './';
Code:
$dir = '';
Code:
$dir = './templates/';
Code:
$dir = 'templates/';
Code:
$dir = './templates';
Code:
$dir = 'templates';
Ergibt alles "Kein Ordner." (templates-Ordner existiert definitiv.).

Ähnliches passiert mir "is_file()" bzw. "is_readable".

Wenn $dir = '' ist, funktioniert es. Wenn $dir jedoch 'templates' (oder eine der oben geschriebenen Varianten) ist, der templates-Ordner existiert und die Datei drin liegt, kommt "Datei nicht vorhanden/lesbar.".
 
Zuletzt bearbeitet:
Zurück