Dies ist eine Weiterführung der Basis Installation, bitte lesen Sie diese zuerst!
Ein flexiblerer Weg um Smarty aufzusetzen ist, die Klasse zu erweitern und eine eigene Smarty-Umgebung zu initialisieren. Anstatt immer wieder die Verzeichnisse zu definieren, kann diese Aufgabe auch in einer einzigen Datei erledigt werden. Beginnen wir, indem wir ein neues Verzeichnis namens '/php/includes/guestbook/' erstellen und eine Datei namens 'setup.php' darin anlegen.
Example 2.12. Editieren von /php/includes/guestbook/setup.php
<?php // Smarty Library Dateien laden define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); require(SMARTY_DIR.'Smarty.class.php'); // ein guter Platz um Applikations spezifische Libraries zu laden // require('guestbook/guestbook.lib.php'); class Smarty_GuestBook extends Smarty { function Smarty_GuestBook() { // Konstruktor. Diese Werte werden für jede Instanz automatisch gesetzt $this->Smarty(); $this->template_dir = '/web/www.example.com/smarty/guestbook/templates/'; $this->compile_dir = '/web/www.example.com/smarty/guestbook/templates_c/'; $this->config_dir = '/web/www.example.com/smarty/guestbook/configs/'; $this->cache_dir = '/web/www.example.com/smarty/guestbook/cache/'; $this->caching = true; $this->assign('app_name','Guest Book'); } } ?>
In unserem Beispiel werden die Library Dateien ausserhalb der DocumentRoot abgelegt. Diese Dateien könnten sensitive Informationen enthalten, die wir nicht zugänglich machen möchten. Deshalb legen wir alle Library Dateien in '/php/includes/guestbook/' ab und laden sie in unserem 'setup.php' Skript, wie Sie im oben gezeigten Beispiel sehen können.
Nun passen wir index.php
an, um 'setup.php'
zu verwenden:
Example 2.13. Editieren von /web/www.example.com/docs/guestbook/index.php
<?php require('guestbook/setup.php'); $smarty = new Smarty_GuestBook; $smarty->assign('name','Ned'); $smarty->display('index.tpl'); ?>
Wie Sie sehen können, ist es sehr einfach eine Instanz von Smarty zu erstellen. Mit Hilfe von Smarty_GuestBook werden alle Variablen automatisch initialisiert.