Buch gesucht, OOP / Templates

Meine eigenen schreiben..ich dachte, ihr kennt mein derzeitiges Niveau :)

Naja, dann muss ich halt im PHP-Skript die ganzen Beiträge (von z.B. einem Gästebuch) samt HTML/CSS machen :/
 
wieso gib doch einfach mit echo aus und html dann brauchst du keine template engine

ich will dir nicht alles schreiben sonst machst du ja nix mehr selber
 
Du, wenn ich auch nur ansatzweise Ahnung hätte, würde ich es versuchen. Und es wäre mir sehr viel lieber gewesen, ich hätte das "Template-System" alleine schreiben können.

Jedoch fehlt mir jeglicher Ansatz.

Btw. weißt du, wie der foreach()-Fehler zustande kommt?

Edit: Ich habe eine Idee, ich versuch mal mein bestes und melde mich dann wieder :)
 
Zuletzt bearbeitet:
Eigentlich könnte man doch auch folgendes machen:
PHP:
while($row = mysql_fetch_object($result))
{
    $tpl = new template('insert.tpl');
    $tpl->assign('NEWS', $row->news);
    $tpl->display();
}
Oder entsteht da ein Nachteil?

Achso..das Problem mit der foreach()-Schleife besteht leider immer noch :(
 
ja es würde schon funktionieren ich hatte damit öfter probleme, da man nicht nur content in der while schleife ausgeben kann!

so muss man entweder per include arbeiten und in das maintpl einbinden

oder man muss entweder nur beiträge oder so ausgeben.....

keine ahnung müsste eigentlich funktionieren, aber mach mal einfach oben bei:

var $vars

ein "= array();" dran

sprich: var $vars = array();
 
Hi,

ich habe mal was einfaches versucht.

_template.php
PHP:
<?php
	class template
	{
		var $source;
		var $file;
		var $vars = array();
		var $result;
		var $dir = './templates/';
		
		public function template($filename)
		{
			if(is_dir($this->dir))
			{
				$file = $this->dir.$filename;
				
				if(!is_file($file) || !is_readable($file))
					die('Datei nicht vorhanden/lesbar.');
				
				$this->source = implode(file($file));
			}
			else
				die('Kein Ordner.');
		}
		
		public function assign($var, $value)
		{
			$this->vars[$var] = $value;
		}
		
		private function parse()
		{
			foreach($this->vars as $search => $replace)
			{
				$this->result = str_replace('{'.$search.'}', $replace, $this->source);
			}
			
			$this->vars = NULL;
		}
		
		public function display()
		{
			$this->parse();
			
			echo $this->result;
		}
	}
?>

index.php
PHP:
<?php
	session_start();

	include '_template.php';
	include '_mysql.php';
	//include '_functions.php';
	
	$index_header = new template('index_header.tpl');
	$index_header->display() or die('a');
	
	//include '_content.php';
	
	$index_footer = new template('index_footer.tpl');
	$index_footer->display() or die('b');
?>
Das Template existiert und liegt im "templates"-Ordner, sonst würde ich ja auch eine Fehlermeldung bekommen.

Das Ergebnis davon ist "a". Hast du eine Idee, wieso?

Sorry, dass ich soviel fragen muss =(
 
echo 'xyz' or die('a');

was soll das sein?

wieso machst du "or die a"? versteh ich nicht

zeigt er nix an?
 
Zurück