Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Einfache Template-Klasse

Tipp Entwicklung PHP

Mitglied: N0ooo0B

N0ooo0B (Level 1) - Jetzt verbinden

03.08.2009, aktualisiert 01:23 Uhr, 6958 Aufrufe, 1 Kommentar, 2 Danke

Mit dieser einfachen Template-Klasse können Sie PHP von HTML getrennt halten

Hallo Benutzer!

Ich stelle dir diese einfache Template-Klasse gerne zuverfügung!

template.class.php:


01.
<?php 
02.
class template 
03.
04.
 
05.
  /** 
06.
    * Template Inhalt 
07.
08.
    * @access protected 
09.
    * @var string  
10.
   */ 
11.
   protected $tmpl_file
12.
 
13.
  /** 
14.
    * Template variabeln 
15.
16.
    * @access protected 
17.
    * @var array  
18.
   */ 
19.
   protected $tmpl_vars;  
20.
    
21.
     /** 
22.
     * Template - Datei auslesen 
23.
     * @param string $template Template-Name 
24.
     */ 
25.
     public function __construct($template) { 
26.
          if (file_exists($template)) { 
27.
               $this->tmpl_file = file_get_contents($template); 
28.
          }else
29.
               die("Template not exists! dummy: {$template}"); 
30.
31.
32.
 
33.
     /** 
34.
     * Template - Variabeln ersetzen bzw setzen 
35.
     * @param array or string $search  
36.
     * @param string $replace 
37.
     */ 
38.
     public function assign($search, $replace=NULL) { 
39.
          if (is_array($search)) { 
40.
              foreach($search as $key => $value) { 
41.
                $this->tmpl_vars[$key] = $value
42.
43.
          }else
44.
                $this->tmpl_vars[$search] = $replace
45.
46.
47.
      
48.
     /** 
49.
     * Template - ausgeben 
50.
     * @return string 
51.
     */ 
52.
     public function output() { 
53.
           
54.
          $this->tmpl_file = preg_replace("/\{(.*?)\}/ise", "\$this->tmpl_vars['\\1']", $this->tmpl_file); 
55.
              print($this->tmpl_file); 
56.
57.
 
58.
 
59.
60.
?>

index.php:

01.
<?php 
02.
  include("template.class.php"); //Includes Class 
03.
   define("TPL_DIR", "templates/"); 
04.
$tmpl = new template(TPL_DIR."index.tpl"); 
05.
 
06.
$tmpl -> assign("Inhalt", "Dein Text"); 
07.
$tmpl -> assign(array("Name" => "Dein Name", "Bild" => "Dein Bild")); 
08.
 
09.
$tmpl -> output(); //Template print 
10.
?>

index.tpl:

01.
<?xml version="1.0"?> 
02.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
03.
<html> 
04.
  <head> 
05.
    <title>New Document</title> 
06.
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
07.
  </head> 
08.
  <body> 
09.
    {Inhalt} 
10.
<hr /> 
11.
<b>{Name}</b><br /> 
12.
<b>{Bild}</b> 
13.
  </body> 
14.
</html>

Ausgabe:

01.
<?xml version="1.0"?> 
02.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
03.
<html> 
04.
  <head> 
05.
    <title>New Document</title> 
06.
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
07.
  </head> 
08.
  <body> 
09.
    Dein Text 
10.
<hr /> 
11.
 
12.
<b>Dein Name</b><br /> 
13.
<b>Dein Bild</b> 
14.
  </body> 
15.
</html>
Mitglied: nxclass
03.08.2009 um 09:36 Uhr
... ggf. kann man auch die Magischen Funktionen _ _ tostring(), _ _ get() und _ _ set() einsetzen.

Wenn man schon im Konstruktor die Ersetzungsmarken in ein Array einliest, könnte man diese über _ _ set($sKey, $sValue) {} setzen und über _ _ get($sKey) {} auslesen als währen es Variablen der Template Klasse.
01.
// Keine Zeit, mach Du das ...  ;-)
... schön das an die Documentor Tags gedacht wurde!
Bitte warten ..
Ähnliche Inhalte
Webentwicklung
Einfache Webseite selber erstellen (4)

Frage von Finley77 zum Thema Webentwicklung ...

Windows Server
gelöst Configuration Manager v1610 Application Creation Template anlegen (4)

Frage von mayho33 zum Thema Windows Server ...

LAN, WAN, Wireless
2. Klasse: Freies WLAN der Bahn wird nach 200 MByte gedrosselt (8)

Link von magicteddy zum Thema LAN, WAN, Wireless ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(10)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (26)

Frage von FA-jka zum Thema Windows 10 ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (23)

Frage von pierrehansen zum Thema LAN, WAN, Wireless ...

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...