Vinzenz Mai: Templateengine PHP MVC

Beitrag lesen

Hallo Robert,

Warum ist Dein Code nicht kommentiert?
Nun ist er. Ich hatte gehofft, er kommentiert sich durch die Wahl der Variablennamen und Funktionsnamen selbst (;-).

das tut Code nie, auch nicht der irgendwelcher Programmiergenies.
Gerade wenn man eigenen Code anderen zumutet, sollte man dafür sorgen, dass Code vernünftig kommentiert ist. Da gab's letztlich einen schönen Link zu einem wunderbaren Weblogartikel - leider finde ich den gerade nicht :-(

<?php
include("Small_Template_Handler.php");

// Warum include?
// Warum nicht require, genauer gesagt require_once?

$template = file_get_contents("test.template.html");
$data["name"] = "Müller";
$data["contact"] = "Telefon";
$data["since"] = "1.1.1800";
$output = Small_Template_Handler::handle($template, $data);

// Was ist nun mit den statischen Eigenschaften Deiner Klasse?
// Läßt Du den Kram dort einfach unordentlich liegen?

var_dump($output);
?>

<?php
// expects template as string and data as array
// finds used placeholders machting pattern "{placeholder}"
// replaces all found placeholders with values, if key exists in data-hash
class Small_Template_Handler
{
private static $template = ""; // template string given as parameter
private static $used_placeholders = array(); //list of all found placeholders
private static $data = array();//data-hash (associative array where keys match placholders name)
private static $output = ""; //replaced template

  
Anders gefragt:  
Warum willst Du unbedingt darauf verzichten, eine Objektinstanz zu erzeugen?  
Was bezweckst Du mit der Doppelung $template und $output?  
  
Versprichst Du Dir eine Optimierung durch Dein Suchen, ob ein bestimmter Platzhalter vorhanden ist? Warum verwendest Du nicht einfach die Array-Variante von [str_replace()](http://www.php.net/manual/de/function.str-replace.php), die Du einfach mit allen Schlüssel-Wert-Paaren fütterst, d.h. dem Array der Schlüssel und dem Array der korrespondierenden Werte?  
  
  
Freundliche Grüße  
  
Vinzenz