Design und PHP. Wie macht ihr es?

VanHellsehn

Erfahrenes Mitglied
Hi,
Wenn die Überschrift noch nicht genau sagt was ich möchte hier erkläre ich es:
Also mich würde mal interessieren wie ihr euer Template(Design) von euerem PHP-Code trennt.
Ich bin bis jetzt immer ziemlich undprofessionell damit umgegangen und habe eine unten.inc.php und eine oben.inc.php gehabt die ich jeweils bei jedem Dokument includet habe.
Ich weiß das es viele andere Möglichkeiten wie zb. Smarty gibt.
Aber mich würde interessieren wie ihr es macht, den ich möchte meinen Code komplett umstrukturieren.

Bitte nennt mir den eurer Meinung nach größten Vorteil an eurer Methode.
Danke im voraus.

MfG,
Marvvvvv
 
Die meisten benutzen Klassen, ich habe diese hier mal im Internet gefunden:
PHP:
<?php
/**
 * Template-Class
 *
 * LICENSE: This source file is subject to
 * "Attribution-Noncommercial-No Derivative Works 3.0 Unported" license
 * that is available through the world-wide-web at the following URI:
 * http://creativecommons.org/licenses/by-nc-nd/3.0/
 * If you did not receive a copy of the license and are unable to
 * obtain it through the web, please send a note to mikescript@gmx.de
 * so I can mail you a copy.
 * Put this always visible and reachable on your page:
 * Template-Class 1.1.0 (c) Pretzlaw
 *
 * 2008/08/29 - Ralf Mike Pretzlaw
 * @category  Template
 * @author    Ralf Mike Pretzlaw
 * @copyright  Ralf Mike Pretzlaw
 * @license    Attribution-Noncommercial-Share Alike 3.0 Unported
 * @link    http://creativecommons.org/licenses/by-nc-sa/3.0/
 * @version    1.0.0
 *
*/

define("TEMPLATE_OPEN", "{");
define("TEMPLATE_CLOSE", "}");
define("TEMPLATE_DIR", "templates");

class Template {
	
	private $ustContent;
	private $mpstVars = array();
	
	function __construct($File, $IsContent = false) {
		if (!$IsContent)
			$this->ustContent = file_get_contents(TEMPLATE_DIR . "/" . $File);
		else
			$this->ustContent = $File;
	}
	
	function __set($var, $val) {
		$this->mpstVars[TEMPLATE_OPEN . $var . TEMPLATE_CLOSE] = $val;
	}
	
	function __get($var) {
		return $this->mpstVars[TEMPLATE_OPEN . $var . TEMPLATE_CLOSE];
	}
	
	function __toString() {
		return strtr($this->ustContent, $this->mpstVars);
	}
	
}

?>

Dabei kann man ganz einfach ein Objekt erstellen, das das Template lädt::
$index = new Template("index.tpl");

Dem ganzen sachen hinzufügen:
$tpl->platzhalter = "Willkommen auf der Seite";

und sich ausgeben lassen nur durch:
echo $tpl;

Sehr schlicht und performant.

EDIT: Merke gerade man kann sogar ein Template in ein Template bringen:
zum Beispiel hat man den Platzhalter {foo} in einem template und da soll ein anderes template mit weiteren Platzhalten (z.B. Bar) rein dann geht das auch:
PHP:
$tpl = new Template("foo.tpl.html");
$tpl->foo = new Template("bar.tpl.html");
$tpl->foo->bar = "muh";

echo $tpl würde dann {foo} in "foo.tpl.html" durch das Template "bar.tpl.html" ersetzen und darin wiederrum würde "{bar}" durch "muh" ersetzt. cool xD
 
Zuletzt bearbeitet:
Ich glaube die Frage ware eher in die Richtung Design gestellt und nicht wie man so eine Template Programmiert und verwendet.

Ich glaube hier geht drum wie man den Seiten Teil aufbaut und welche Teile man davon dann austausch.

Viele Seiten haben zb immer den selben footer (fuß teil) daher macht es wenig sind diesen auf jeder seite immer wieder dazu zu schreiben oder eben einmal und nur dann den Inhalt zu austauschen.

In diese Richtung dürfte die Frage gehen.

Ich definere da eine Standard Vorlage wo ich sage diese Teile brauche ich immer in der Template drin und andere die durch andere Template inhalte ersetz werden werden dann eben dynamisch nach geladen.

Wie man das Design hängt doch stark von einzelen Projekt ab.

Alles was sich so gut wie nie ändert würde ich als Standard in der Template definieren. Modularer Aufbau eben.

Um möglichst viele Redunazen zu vermeiden. Nichst ist schlimmer als wenn der selbe code 10 mal in einer anderen Datei steht.

Beim Design geht es genau darum dies zu vermeiden wie man eben das am besten Aufbaut ohne das man nacher in vielen Datein das selbe drinen stehen hat.

Mfg Splasch
 
Zuletzt bearbeitet:
Danke für den Tipp.
Also mal was zu meiner Seite ich habe ne kleine Community mit eigenem Forum etc.
Also zeimlich viel Programmiertes zeug.
Die lösung von ZodiacXP finde ich schonmal gut..
Nur ich möchte mich jetzt halt auf eins festlegen um nich wieder alles neu machen zu müssen wenn ich was besseres finde ;)
 
PHP selbst ist ja eine "Template-Engine" :D aber schau mal oben meinen Beitrag, habe ein EDIT gemacht.

Man kann Platzhaltern in einem Template noch weitere Templates zuordnen mit weiteren Platzhaltern. Ziemlich praktisch.

Wieder EDIT: Negative ist halt das Copyright :p
 
Zuletzt bearbeitet:
Danke das sieht alles nicht schlecht aus =)
Aber möchte mal noch einen Vergleich am besten.
Bin aber eigetlich ziemlich angetaen von dem Code.
 
Schau' Dir am Besten mal Smarty an, da hast Du viel mehr Möglichkeiten... Sei aber gewarnt: es gibt gute Gründe, keine überladene Template-Engine zu verwenden. Bei größeren Seiten würde ich dir eine schlanke Template-Engine und gute Caching-Mechanismen empfehlen.
 
Nein, nicht mehr und wenn doch, dann äußerst selten. Ich habe die Erfahrung gemacht, dass der Einsatz von Smarty - oder jeder anderen Template-Engine - nur dann wirklich Sinn macht, wenn die Vorzüge auch sinnvoll genutzt werden. Mit sinnvoll meine ich die klassische Trennung von PHP & HTML. Ein absolutes NO GO ist die Programmierung innerhalb eines Templates.

Ob der Einsatz von einem Templatesystem in Deinem Projekt sinnvoll ist, ist reine Abwägungssache. Mit unter ausschlaggebend ist eine clevere Systemarchitektur...
 

Neue Beiträge

Zurück