Saját sablonrendszer I.: működési rétegek, tervezés

2005. nov. 22. (kedd), 23:35, D. keze nyomán
Open Source, Saját kód, Webfejlesztés, Ismeretterjesztő
A két cikkben a működési rétegek elkülönítéséről, a sablonok (template-ek) előnyeiről, hátrányairól, egy PHP alapú, saját sablonkezelő megírásáról, valamint a szükséges sablonok elkészítéséről és használatáról lesz szó.

Első rész:
  1. A háttér: különálló működési rétegek
  2. Előnyök
  3. Hátrányok
  4. Mi az a sablon?
  5. Mit is szeretnénk elérni?

Második rész:
  1. A sablonkezelő részei
  2. A sablonkezelő osztály, mint megvalósítás
  3. Végszó

A háttér: különálló működési rétegek

A dinamikus lap működési elve nagy vonalakban az, hogy a tárolt adatokat (adatréteg, data layer) egy feldolgozó script (feldolgozóréteg, esetünkben a PHP script) előbányássza, átalakítja, majd a kimenetre küldi. A PHP scriptek kimenete jellemzően (X)HTML, vagyis a kliensnél ténylegesen megjelenő, végleges lap HTML szerkezetét (strukturális réteg) a PHP rakja össze. Jobb esetben e strukturális réteg nem tartalmaz formázóelemeket, mivel a teljes arculatot CSS-sel valósítjuk meg (megjelenítési réteg). A dolgot némileg színesítheti még, ha pl. JavaScriptet használunk (viselkedési réteg, behavior layer), cikkemben erre nem térek ki.
A folyamat tehát adatbázis -> PHP -> XHTML -> CSS irányú; a PHP és HTML elemek keverednek.

Előnyök

Ideális esetben a rétegeket érdemes elkülöníteni, mivel
  • a strukturális réteg (HTML) átírásához nem kell mélyen a feldolgozórétegben (PHP script) kotorászni, vagyis a fejlesztés és karbantartás jelentősen leegyszerűsödik (a kód újrafelhasználhatósága jelentősen javul)
  • egymástól még strukturálisan is eltérő arculatok hozhatók létre
  • a rétegek különállóságának megtartása logikai irányvonalakat is ad a fejlesztőnek

(Érdeklődőknek ajánlott olvasmány az MVC (modell-view-controller) tervezési minta.)

Hátrányok

A fentiekben már kaphattunk némi ízelítőt az előnyökből (melyeket egyébként csak akkor érez át igazán az ember, ha másfélezer sornyi kódot kell kibogarásznia két div miatt), ugyanakkor a (kevert PHP-HTML-hez képest vett) hátrányokról sem szabad elfelejtkeznünk.
A plusz egy réteg már sugallja a teljesítményvesztést: a sablonkezelő is erőforrást emészt, némileg több "vas" fog kelleni a feldolgozáshoz. A valóságban kis- és középméretű lapoknál ez alig jelentkezik, komolyabb terheléseknél azonban figyelni kell (a megoldást a lapok cache-elése, a kész kimenet tárolása jelenti).

Mi az a sablon?

A sablonok (template) a strukturális réteg önálló képviselői, sémák, minták meghatározásával keretet adnak a kész adatoknak.
Úgy érdemes elképzelni ezeket, mint egy üres papírlapot, melyen egyszerű geometriai formák vannak, legyenek ezek mondjuk egy kör, egy négyzet, és két háromszög. A kör egy írás címét, a négyzet az írás szövegét, a háromszögek pedig képet jelentenek. A feldolgozó réteg egy kört, egy négyzetet, és két háromszöget ad át a sablonkezelő rendszernek, amely "veszi a lapot" (a sablont), az adatokat (kör, négyzet, háromszög) ráteszi a lapon oda, ahova illenek, majd visszaadja a kész lapot (kész HTML).

Mit is szeretnénk elérni?

A gyakorlatot tekintve egy olyan egyszerű, bárki által használható sablont szeretnénk létrehozni, mely a lehető leggyorsabban feldolgozható, ugyanakkor biztosítja a minimálisan elvárható eszközöket a fejlesztő számára: ezek az ismétlődő részek, illetve a feltételes szerkezetek.
Ezek megvalósításával folytatjuk a következő cikkben.