Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Smarty. Szablony
w aplikacjach PHP
Autorzy: H. Hayder, J. P. Maia, L. Gheorge
Tumaczenie: Radosaw Meryk (rozdz. 1, 2, 4 11),
Robert Polaski (rozdz. 3)
ISBN: 83-246-0647-5
Tytu oryginau: Smarty PHP Template
Programming and Applications
Format: B5, stron: 296
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
O autorach
11
O recenzencie
13
Przedmowa
15
19
Systemy szablonw
Po co stosuje si systemy szablonw?
Inteligencja technologii Smarty
Alternatywy dla technologii Smarty
Krtki przewodnik po procesie projektowania oprogramowania
Praca w zespole warstwy i podzia obszarw zainteresowa
Smarty podstawowy system obsugi szablonw dla jzyka PHP
Czy aplikacje z szablonami Smarty s szybkie?
Czy szablony Smarty s bezpieczne?
Gwne wasnoci technologii Smarty
Modyfikatory zmiennych
Funkcje szablonw
Debugowanie
Wtyczki
Filtry
Wntrze systemu Smarty
Instalacja i konfiguracja systemu Smarty
Krok 1. Zdobycie systemu Smarty
Krok 2. Konfigurowanie PHP w sposb umoliwiajcy odnalezienie bibliotek Smarty
Alternatywa kroku 2. Korzystanie z bibliotek Smarty w sytuacji,
kiedy nie mamy penego dostpu do systemu
Krok 3. Konfiguracja Smarty w aplikacji
Krok 4. Sprawdzenie poprawnoci instalacji
Wersja rozwojowa systemu Smarty w repozytorium CVS
Aktualizacja witryny korzystajcej z szablonw Smarty
Podsumowanie
19
20
21
22
23
24
26
26
27
28
28
29
29
29
30
31
32
32
33
34
35
35
35
37
37
39
40
40
41
41
42
43
43
44
44
47
48
50
52
53
53
54
55
57
59
61
64
65
66
67
69
69
73
75
75
75
76
78
78
80
84
84
87
91
95
98
99
Spis treci
101
101
103
104
104
104
104
108
111
111
111
112
113
113
113
114
116
117
118
118
118
119
120
120
121
121
122
123
123
124
125
125
127
129
129
130
132
133
133
135
137
138
140
143
144
146
150
151
152
155
157
159
159
161
163
170
171
172
173
175
175
175
175
176
176
176
176
176
177
177
177
177
178
178
178
178
179
179
179
180
180
180
180
180
180
181
181
181
Spis treci
$autoload_filters
$config_overwrite
$config_booleanize
$config_read_hidden
$config_fix_newlines
$default_template_handler_func
$compiler_file
$compiler_class
$config_class
Podrczna tabela wbudowanych zmiennych systemu Smarty
Wbudowane metody Smarty
assign
assign_by_ref
Przykad dziaanie metod assign i assign_by_ref
append
append_by_ref
clear_assign
register_function
unregister_function
register_object
unregister_object
register_block
unregister_block
register_compiler_function
unregister_compiler_function
register_modifier
unregister_modifier
register_resource
unregister_resource
register_prefilter
unregister_prefilter
register_postfilter
unregister_postfiIter
register_outputfilter
unregister_outputfilter
load_filter
clear_cache
clear_all_cache
is_cached
clear_all_assign
clear_compiled_tpl
template_exists
get_template_vars
get_config_vars
trigger_error
display
181
181
182
182
182
182
182
182
182
183
187
187
187
188
190
191
191
192
192
193
193
193
194
194
195
195
195
195
196
196
196
197
197
197
198
198
198
199
199
199
199
200
200
200
200
201
fetch
config_load
get_registered_object
clear_config
Podsumowanie
201
201
201
202
202
203
204
206
206
208
209
209
210
214
220
221
222
223
225
225
226
227
228
229
231
232
232
232
234
236
239
240
240
241
241
241
241
241
242
243
245
248
250
Spis treci
Skorowidz
251
251
252
252
252
253
254
255
256
259
262
263
266
267
268
268
269
270
273
276
280
282
283
Wspczesne witryny WWW daleko wykraczaj poza poziom prezentacji sumarycznych danych i informacji kontaktowych dla firm i projektw. Internet przeszed ewolucj, w wyniku
ktrej wikszo wspczesnych witryn to samodzielne przedsiwzicia, a nie prezentacje firm.
Co wicej, projektanci zoonych aplikacji zaczli wykorzystywa witryny WWW jako interfejs
dla swoich programw.
Od ponad dziesiciu lat PHP jako najbardziej kompletny jzyk programowania aplikacji WWW
o otwartym kodzie jest jedn z najlepszych technologii tworzenia witryn w internecie. Wraz
ze wzrostem zoonoci aplikacji PHP pojawi si nowy problem w jaki sposb oddzieli kod
pisany przez programistw (PHP) od kodu pisanego przez projektantw witryn (HTML) lub,
posugujc si bardziej precyzyjnymi sformuowaniami, jak oddzieli tre od jej prezentacji.
Technologi Smarty system szablonw dla jzyka PHP opracowano po to, by rozwiza
ten problem.
Projektanci tworz wizerunek witryny WWW, wprowadzajc ilustracje, style tekstu, tabelki itp.
Tworz szablony pokazujce, w jaki sposb bdzie prezentowana tre na stronie.
Jedyn informacj, jakiej potrzebuj projektanci, jest to, w jaki sposb powinna wyglda witryna
oraz czy tre powinna by zaprezentowana w postaci aktualnoci, opisu produktu, artw itp.
Z kolei programici tworz kod aplikacji, ktrego zadaniem jest przetwarzanie wystpujcych
w niej danych (reguy biznesowe). Nie interesuje ich to, jak witryna WWW wyglda (kolory,
ilustracje, style tekstu) lub jaki jest ukad treci na stronie. Programici musz jedynie przekaza tre do szablonw, posugujc si nazwami zmiennych uzgodnionymi z projektantami.
Z grubsza w ten sposb dziaa system szablonw. Oprcz tej podstawowej funkcji kady system
szablonw zawiera zbir wasnoci funkcjonalnych, ktre jeli s dobrze udokumentowane,
uatwiaj posugiwanie si systemem przez projektantw i programistw.
Celem niniejszej ksiki jest pokazanie optymalnego sposobu wykorzystania wszystkich wasnoci technologii Smarty.
20
W przypadku bardziej zoonych projektw internetowych, takich jak portale, witryny e-commerce, systemy ERP itp. rwnie mona zastosowa pierwsz opcj, ale w wikszoci przypadkw, przystpujc od razu do kodowania, niewiele si osignie. Co wicej, biorc pod uwag
fakt, e na rynku jest bardzo wiele projektw internetowych, nasza witryna WWW bdzie miaa
szanse tylko wtedy, gdy bdzie miaa doskonay ukad, odpowiedni do tworzonego projektu,
oraz oczywicie stabilny kod, przetestowany we wszystkich moliwych sytuacjach. Dlatego wanie osoby zajmujce si tworzeniem witryn WWW specjalizuj si w tworzeniu doskonaego
ukadu witryn WWW (projektanci) albo w ich oprogramowywaniu (programici). Niezbyt
czsto spotyka si dobrych programistw witryn WWW tworzcych doskonae projekty lub
dobrych projektantw, ktrzy pisz dobry, wolny od bdw kod.
Firmy programistyczne zajmujce si tworzeniem witryn WWW, zazwyczaj maj wydzia
projektowy i wydzia programowania. Nad wikszoci rednich i duych projektw internetowych pracuj zarwno programici, jak i projektanci.
Programici stosuj bardzo rne sposoby kodowania aplikacji. Gdyby posugiwali si wycznie
jzykiem PHP, bez szablonw, projektanci musieliby zna wszystkie sposoby tworzenia kodu
stosowanego przez programistw, nazywania zmiennych itp. Z kolei programici musieliby
rozumie szablony projektantw i generowa kod PHP, ktry wywietla kod HTML w miejscu,
w ktrym ycz sobie tego projektanci.
Rozwamy nastpujcy przykad:
for ( $col = 1; $col < $i; $col++ ) {
print "<tr> <td> $procesid[$col]</td> <td>$data[$col] </td>
<td>$value[$col]</td> </tr>"; }
Jest to kod PHP wywietlajcy w tabelce wartoci trzech tablic. Nawet w przypadku tak prostego przykadu jak ten, ktry pokazano powyej, trudno rozmieci informacje na stronie WWW
dokadnie tak, jak oczekiwano.
W przypadku technologii Smarty kod PHP nie zawiera instrukcji print. Zamiast tego programista przekazaby te trzy tablice do projektanta poprzez przypisanie ich do szablonw
Smarty. Dalej to ju zmartwienie projektanta, ktry, nie przejmujc si kodem PHP, musi zadba o to, by tabelka dobrze wygldaa na stronie. Jest to jedna z wielkich zalet technologii
Smarty. W tej ksice dowiemy si, w jaki sposb j uzyskano.
21
22
FastTemplate: http://www.thewebmasters.net/php/FastTemplate.phtml,
SimpleTemplate: http://simplet.sourceforge.net/,
Yapter: http://yapter.sourceforge.net/,
patTemplate: http://www.php-tools.de/site.php?file=/patTemplate/overview.xml.
Proces tworzenia witryny internetowej obejmuje kilka czynnoci, ktre w rnych projektach
mog by rne, cho w wikszoci przypadkw s do siebie podobne.
Najpierw trzeba okreli potrzeby klienta, dla ktrego tworzymy baz danych. Potrzeby te naley
pniej uzgodni. Mona to zrobi ustnie, ale znacznie lepiej sporzdzi odpowiedni dokument. W takim dokumencie powinien znale si opis planowanych wasnoci funkcjonalnych
23
oprogramowania, a take definicje tabel bazy danych wraz z opisem poszczeglnych kolumn.
Po uzgodnieniu tego dokumentu z klientem oraz ewentualnym wprowadzeniu zmian mona
przystpi do waciwego procesu tworzenia witryny internetowej.
Jeli piszemy aplikacj sami dla siebie, nie musimy sporzdza wspomnianego wyej dokumentu. W pozostaych przypadkach gorco zalecam, aby to zrobi. W jednym z moich pierwszych projektw zaniedbaem etap jego tworzenia, co spowodowao, e projekt zakoczy si
cakowitym fiaskiem. Klient chcia coraz wicej funkcji, za ktre nie chcia paci, a gdyby
istnia dokument, nie miaby innego wyjcia.
Nastpna czynno polega na utworzeniu i zaprezentowaniu klientowi kilku ekranw. To zadanie naley do projektanta. Powinien on wsplnie z klientem opracowa ukad witryny, ktry
spodoba si klientowi. Po uzgodnieniu projektu rozpoczyna si waciwy proces tworzenia
witryny WWW. Po zakoczeniu projektu, klient ma pewien czas na testowanie, w ktrym wprowadza si kilka modyfikacji i usuwa znalezione bdy. Na tym projekt si koczy.
Wszystko wyglda piknie w teorii, jednak w rzeczywistoci programici posuguj si takimi
jzykami jak PHP i SQL, natomiast projektanci HTML i CSS. W zwizku z tym pomidzy
nimi czsto wystpuj rnice.
Praca w zespole
warstwy i podzia obszarw zainteresowa
W przypadku, gdy istnieje zagroenie niepowodzeniem interakcji pomidzy ludmi, trzeba
jak najbardziej rozdzieli ich zadania. Mona to zrobi, stosujc architektur wielowarstwow
oprogramowania. Najczciej spotyka si architektur trjwarstwow. Nale do niej nastpujce
warstwy:
warstwa prezentacji,
warstwa regu biznesu,
warstwa dostpu do danych.
Rozdzielenie tych warstw na etapie projektowania aplikacji pozwala na osignicie szybkiego
tempa tworzenia aplikacji przy zachowaniu atwoci zarzdzania projektem.
Interakcje pomidzy warstwami w architekturze trjwarstwowej pokazano na rysunku 1.2.
Na samym dole, w warstwie dostpu do danych, znajduj si dane, ktre chcemy zaprezentowa uytkownikom, oraz sposoby ich uzyskiwania. Warstwa dostpu do danych moe si
skada z nastpujcych elementw:
24
bazy danych (MySQL, PostgreSQL, MSSQL itp.) oraz jzyka SQL sucego
do wydobywania danych z bazy danych,
plikw, w ktrych s zapisane dane i funkcji w PHP (lub innych jzykach),
ktre przetwarzaj te pliki,
oprogramowania do zbierania danych (na przykad programu obsugi termometru
podczonego do portu rwnolegego).
Teraz, kiedy pobralimy dane, moemy je przetworzy w celu uzyskania wynikw do wywietlenia. Przetwarzanie danych i sprawdzanie ich poprawnoci odbywa si w warstwie regu
biznesu, ktra moe zawiera nastpujce elementy:
mechanizmy sprawdzania poprawnoci danych na podstawie obowizujcych regu
(na przykad wywietlanie tylko tych towarw, ktre s w magazynie),
przetwarzanie danych zgodnie z obowizujcymi reguami (na przykad rabaty,
wyprzedae itp.),
funkcje i formuy suce do obliczania takich danych, jak koszty wysyki itp.
Warstwa prezentacji to miejsce, w ktrym definiuje si ukad strony WWW sposb wywietlania danych z warstwy regu biznesu na stronie WWW. Wykonuje si to za pomoc nastpujcych mechanizmw:
szablonw stron WWW,
arkuszy stylw CSS,
ilustracji, banerw i menu.
Bez mechanizmu obsugi szablonw w warstwie prezentacji znalazby si kod HTML i PHP
tworzcy ukad strony byby to zarwno czysty HTML, jak HTML generowany za pomoc
kodu PHP. W takim przypadku nie mona mwi o dwch oddzielnych warstwach: prezentacji
i regu biznesu. W zwizku z tym, w przypadku zoonych projektw programistycznych
wsppraca projektantw z programistami byaby bardzo trudna. W tej sytuacji z pomoc
przychodzi technologia Smarty.
25
26
raz przez mechanizm Smarty, a ponownej kompilacji podlegaj jedynie te szablony, ktre zostan zmodyfikowane. System Smarty wykonuje to automatycznie. W efekcie mechanizm PHP
tworzy szybko dziaajc aplikacj, a dodatkowe koszty zwizane z zastosowaniem technologii
Smarty s nike.
Dodatkowo dobr wiadomoci dla osb szczeglnie zatroskanych wydajnoci witryny jest
fakt, i system Smarty posiada wbudowan obsug buforowania, ktra jeszcze bardziej przyspiesza aplikacj. W szczeglnoci dotyczy to witryn WWW z zawartoci, ktra nie zmienia
si zbyt czsto. W buforze mona umieci ca zawarto witryny WWW bd tylko jej cz
i okreli czas, przez jaki system Smarty bdzie utrzymywa zawarto strony w buforze. Proces
ten omwimy bardziej szczegowo w rozdziale 9.
Poniewa w wyniku kompilacji szablonw Smarty powstaj skrypty PHP, nie ma powodu, by
zaniecha stosowania technologii buforowania skryptw PHP takich jak PHP Accelerator lub
Zend Cache.
Mechanizmy PHP Accelerator oraz Zend Cache bez problemu obsuguj wyniki dziaania
systemu Smarty i bardzo dobrze buforuj skrypty PHP generowane przez Smarty. Z tego powodu, jeli wydajno aplikacji jest dla nas priorytetowa, powinnimy zastosowa jedno z wymienionych rozwiza buforowania w poczeniu z wbudowanym mechanizmem buforowania
systemu Smarty.
27
System Smarty oferuje narzdzia do optymalizacji pracy zarwno projektantom, jak i programistom. Podczas lektury tej ksiki poznamy wszystkie te doskonae wasnoci, co pozwoli nam
si przekona, jak doskonaym narzdziem jest Smarty. Sprbujmy dokona przegldu niektrych
spord tych wasnoci i przeanalizowa powody, dla ktrych naley je wykorzystywa, oraz te,
dla ktrych lepiej z nich zrezygnowa.
Modyfikatory zmiennych
Podczas wywietlania zawartoci w witrynie WWW niektre jej fragmenty mog si zmienia
w zalenoci od czasu przegldania witryny oraz tego, skd pochodzi odwiedzajcy. Na przykad,
w niektrych sytuacjach chcemy wywietla daty w rnych formatach. Jeli wykorzystamy
technologi Smarty, zastosowanie rnych formatw wywietlania daty nie wymaga interwencji
programisty. Wystarczy, jeli programista przekae do szablonu dat za pomoc odpowiedniej
zmiennej, a projektant bdzie mg j sformatowa tak, jak chce.
Projektant moe rwnie wywietli zmienn wielkimi bd maymi literami, obci blok tekstu,
wprowadzi spacje pomidzy znakami itp. Stosujc system Smarty, wszystko to mona uzyska
na etapie wywietlania strony.
Rozwamy sytuacj, w ktrej chcielibymy wywietli nazw kategorii produktw w postaci
niewielkiego tytuu pisanego wielkimi literami ze spacjami pomidzy znakami (na przykad
P O J A Z D Y). W bazie danych we waciwej kolumnie jest sowo pojazdy. W przypadku
uycia technologii Smarty nie trzeba prosi programisty o zmian tej nazwy na P O J A Z D Y.
Po przekazaniu zmiennej do szablonu mona j sformatowa za pomoc modyfikatorw zmiennych w fazie wywietlania. Co wicej, pniejsza modyfikacja sposobu wywietlania kategorii
produktw (na przykad do postaci Pojazdy), rwnie nie wymaga interwencji programisty.
Wicej informacji na temat modyfikatorw zmiennych mona znale w rozdziale 5.
28
Funkcje szablonw
Analizujc skadni szablonw Smarty, odkryjemy inny doskonay element funkcje szablonw.
Rozwamy przypadek projektowania rozbudowanego formularza z wieloma rozwijanymi menu
HTML. Stary sposb polega na napisaniu znacznikw dla kadego menu rozwijanego. W przypadku zastosowania technologii Smarty wystarczy napisa funkcj dla rozwijanych menu i wywoa j za kadym razem, kiedy chcemy wywietli menu. Jest to sposb prostszy i szybszy.
To by tylko nieskomplikowany przykad, jednak dziki pisaniu funkcji wywietlajcych zawarto w sposb, ktry czsto powtarza si na stronie, mona zaoszczdzi duo czasu.
Wicej informacji na temat funkcji szablonw mona znale w rozdziale 6.
Debugowanie
Na kadym etapie tworzenia aplikacji, programici i projektanci musz wykona debugowanie
po to, by w atwy sposb poprawi swoj prac.
Zastanwmy si, ile czasu moemy straci, jeli popenimy literwk w nazwie zmiennej i nie
dysponujemy narzdziami do debugowania. Z mojego dowiadczenia w pracy w charakterze
programisty wynika, e jest to najgorszy scenariusz. Jeszcze gorszy od sytuacji, w ktrej popenia si bdy w algorytmie.
Chocia funkcja debugowania w czystym PHP jest dostpna, system Smarty jest wyposaony
w konsol debugowania umoliwiajc poprawianie bdw zwizanych z szablonami Smarty.
Jest to bardzo rozbudowane narzdzie, ktre dostarcza informacji o wszystkich wczonych
szablonach, przypisanych zmiennych oraz zmiennych pliku konfiguracyjnego dla biecego
szablonu.
Dziki zastosowaniu technologii Smarty mona zmodyfikowa format konsoli debugowania.
Pozwala to na wyrnienie elementw, ktre w debugowaniu s wane. Co wicej, korzystajc
z funkcji Smarty w szablonie, mona zrzuci zawarto konsoli debugowania na stron. Poniewa jednak funkcje Smarty wykonuj si w fazie dziaania aplikacji, mona zobaczy jedynie
uyte zmienne, a nie wczone szablony.
Wicej informacji na temat debugowania w systemie Smarty mona znale w rozdziale 7.
Wtyczki
Jedn z najistotniejszych wasnoci dla firmy zajmujcej si tworzeniem oprogramowania jest
moliwo wielokrotnego wykorzystywania kodu. W ten sposb mona zaoszczdzi czas i pienidze. Tworzc nowe projekty zawierajce wasnoci funkcjonalne zwizane z projektami
tworzonymi wczeniej, mona wykorzysta kod z poprzednich projektw. Wasno ta jest
jednym z czynnikw, ktre powoduj, e przedsibiorstwa programistyczne przynosz zyski.
29
Filtry
Zdyscyplinowani projektanci pisz wiele komentarzy w swoich szablonach, co powoduje, e
pliki wynikowe po kompilacji maj du objto. Twrcy systemu Smarty pomyleli o tym
i stworzyli zbir filtrw pozwalajcych na rozwizanie tego problemu. W systemie Smarty s
dostpne filtry wstpne (ang. prefilters) s to funkcje PHP, ktre przetwarzaj szablony
Smarty przed ich skompilowaniem. Dziki filtrom wstpnym mona zmodyfikowa w szablonach
dowolne elementy jeszcze przed kompilacj szablonu. Na przykad, stosujc filtry wstpne,
mona z atwoci usun z szablonu wszystkie komentarze.
Jeli jednak chcemy wprowadzi jakie komentarze do skompilowanych szablonw, moemy
to zrobi, stosujc filtry kocowe (ang. postfilters). Filtry kocowe w systemie Smarty to funkcje
PHP, ktre przetwarzaj szablony Smarty po ich skompilowaniu.
30
Zawarto szablonw mona rwnie filtrowa za pomoc filtrw wynikowych (ang. output
filters) funkcji PHP sucych do filtrowania wyniku szablonu w czasie jego dziaania. Dziki
temu mechanizmowi mona na przykad, zastpi zakazane sowa znakiem *, ukry adresy e-mail
itp. Dziki rozbudowanym filtrom programista ma pen kontrol nad szablonami.
Wicej informacji na temat filtrw wstpnych, kocowych i wynikowych mona znale
w rozdziale 11.
Z punktu widzenia projektantw Smarty jest nowym, prostym systemem skryptowym o rozbudowanych moliwociach, ktry mona uywa razem z HTML w celu usprawnienia pracy
z programistami. Nowy jzyk skryptowy, ktry system Smarty udostpnia projektantom, zapewnia sposoby uatwienia ich pracy.
Dobr ilustracj do wczeniejszego zdania jest nastpujcy fragment kodu:
<select name="Employee">
{HTML_options options=$names}
</select>
Pierwszy i ostatni wiersz jest napisany w jzyku HTML, natomiast wiersz rodkowy to Smarty.
Jego dziaanie polega na wybraniu wierszy z wartociami z tablicy $names otrzymanej od programisty. Dziki temu projektant musi jedynie poprosi programist, aby ten przekaza nazwiska pracownikw w tablicy $names (minimum interakcji). Zamiast wielokrotnego pisania
znacznikw <option></option> projektant wykorzystuje funkcj Smarty, ktra upraszcza
jego prac.
Zamiast umieszczania kodu pokazanego w powyszym przykadzie w pliku HTML projektant
umieszcza go w pliku z rozszerzeniem .tpl i przekazuje programicie pen nazw pliku z szablonem (.tpl).
Jedn z czci tej ksiki zatytuowano Smarty dla projektantw. Projektanci naucz si
z niej jzyka skryptowego wraz z przydatnymi przykadami, wskazwkami i sztuczkami zaczerpnitymi z dowiadcze autora.
Z punktu widzenia programisty Smarty jest rozbudowan klas PHP zawierajc zmienne
i metody. Nazwa klasy to Smarty, a zatem w celu przypisania zmiennej obiektu klasy Smarty
programista musi napisa nastpujcy kod:
$smarty = new Smarty;
31
Dla programistw jedn z najwikszych zalet technologii Smarty jest brak koniecznoci umieszczania kodu HTML w skryptach PHP. Kod HTML znajduje si w plikach .tpl, ktre s wywietlane za pomoc metod klasy Smarty:
$smarty->display("index.tpl");
Drug cz tej ksiki zatytuowano Smarty dla programistw. Po jej przestudiowaniu programici zapoznaj si z klas Smarty oraz najlepszymi sposobami jej wykorzystywania.
System Smarty jest rozprowadzany zgodnie z licencj GNU Lesser General Public License,
ktra stanowi kontynuacj licencji GNU Library General Public License. Rnica pomidzy
now licencj Lesser GPL i star Library GPL polega na tym, e programy z licencj Lesser
GPL s w mniejszym stopniu chronione. Oznacza to, e biblioteki rozprowadzane zgodnie
z t licencj s darmowe i mona je wykorzysta do tworzenia oprogramowania komercyjnego.
Stara licencja Library GPL pozwala na wykorzystywanie oprogramowania rozprowadzanego
na jej prawach wycznie do tworzenia darmowego oprogramowania.
Istotne jest to, e Smarty jest narzdziem darmowym, ktre mona wykorzysta do tworzenia
oprogramowania komercyjnego bez koniecznoci wnoszenia opat.
Czytelnicy, ktrzy chc si przekona, czy postpuj w 100% zgodnie z prawem, powinni przeczyta ca licencj Lesser GPL dostpn pod adresem http://www.gnu.org/copyleft/lesser.html.
32
Po pobraniu systemu Smarty z serwera i rozpakowaniu archiwum tworzy si folder z dystrybucj systemu Smarty. W gwnym folderze dystrybucji znajduje si folder libs zawierajcy
nastpujce pliki i foldery:
smarty.class.php,
smarty_Compiler.c1ass.php,
config_File.class.php,
debug.tpl,
\internals,
\p1ug-ins.
Wszystkie te pliki s wymagane do dziaania aplikacji Smarty. Skryptw PHP nie naley modyfikowa.
W systemie Windows
Oto bardzo prosta, a jednoczenie skuteczna metoda konfiguracji bibliotek Smarty: najpierw
naley utworzy folder, na przykad mycode w gwnym katalogu dokumentw instalacji serwera
Apache. Nastpnie trzeba skopiowa folder libs z dystrybucji Smarty do folderu mycode (na przykad c:\apache\htdocs\mycode\libs\).
Po wykonaniu tej czynnoci, naley wyedytowa plik php.ini i wprowadzi do niego zapis
include_path = ".;c:\apache\htdocs\mycode\libs\", gdzie c:\apache\htdocs\mycode\libs\
reprezentuje lokalizacj folderu libs.
W systemie Linux
Zamy, e dystrybucj Smarty pobran z internetu rozpakowalimy w katalogu /usr/local/Smarty.
Naley wyedytowa plik php.ini i wprowadzi do zapis include_path = ".:/usr/local/
Smarty/libs". To wszystko. Aby unikn edycji pliku php.ini, mona rwnie skopiowa folder
libs do dowolnej lokalizacji w ramach cieki include_path ustawionej w tym pliku.
Jest to najatwiejszy sposb instalacji bibliotek Smarty. W kadym skrypcie PHP, ktry ma korzysta z szablonw Smarty, naley zaadowa skrypt Smarty.class.php. Zatem jeeli plik ten
znajduje si w folderze cieki include jzyka PHP, utworzenie egzemplarza klasy Smarty
wymaga wprowadzenia nastpujcego kodu:
33
<?php
require('Smarty.class.php');
$smarty = new smarty;
?>
Po skonfigurowaniu rodowiska naley zmieni uprawnienia do folderu templates_c znajdujcego si w ciece skryptw. Oznacza to, e folder, w ktrym znajduje si kod, oraz templates_c
musz by zapisane w tym samym katalogu. Wykorzystujc FTP, mona zmieni uprawnienia
do folderu templates_c na 777 (rwxrwxrwx).
Operacj t mona wykona za pomoc nastpujcego polecenia powoki:
chmod -R 0777 templates_c
W systemie Linux:
<?php
define('SMARTY_DIR', '/usr/local/smarty/libs');
require(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty;
?>
W zwizku z wieloma moliwociami korzystania z technologii Smarty w niniejszej ksice przyjto zaoenie,
e folder libs skopiowano z gwnego katalogu dystrybucji systemu Smarty do folderu mycode w obrbie
gwnego katalogu dokumentw systemu Apache i dodano t lokalizacj do pliku php.ini. W przypadku systemu Linux dodatkowo zaoono, e uprawnienia do folderu templates_c ustawiono na 777 (rwxrwxrwx).
34
nobody:nobody /www/htdocs/templates_c
nobody:nobody /www/htdocs/cache
770 /www/hdocs/templates_c
770 /www/htdocs/cache
35
Mona rwnie pobra wskazan stabiln wersj systemu Smarty za pomoc nastpujcego
polecenia:
cvs -d :pserver:cvsread@cvs.php.nets/repository co -r smarty_X_Y_Z smarty
przy czym X_Y_Z oznacza numer wersji. Na przykad wpisanie smarty_2_6_10 w wierszu polecenia powyej spowoduje pobranie wersji 2.6.10 systemu Smarty do folderu smarty.
Uycie biecej dystrybucji systemu Smarty pobranej z serwera CVS PHP w aplikacjach produkcyjnych
nie jest zalecane. Jest to wersja niestabilna, nad ktr trwaj prace. Do tworzenia witryn WWW wykorzystywanych w praktyce naley uywa najnowszej stabilnej wersji systemu Smarty.
36
System Smarty jest zgodny wstecz, a zatem jeli wystpi potrzeba aktualizacji witryny Smarty,
wystarczy wykona nastpujce czynnoci:
Pobra najnowsz dystrybucj systemu Smarty zgodnie z opisem zamieszczonym
w kroku 1.
Zastpi star zawarto folderu libs, w ktrym zainstalowano system Smarty,
zawartoci folderu libs z nowego gwnego katalogu dystrybucji.
Upewni si, e w adnym z katalogw wchodzcych w skad cieki include
interpretera PHP nie ma starego pliku Smarty.class.php.
37