Sablonok php

A sablon forrása

Alkalmazás logika és kijelző logika

Ezt az egyszerű műveletet joggal nevezhetjük üzleti logikának vagy alkalmazás logikának. Más szóval, ez a program lényege. A programból semmi többet nem szükséges, kivéve, hogy hogyan számítsuk ki a két kifejezés összegét. Végül ez a program (feltételezve, hogy a $ a és a $ b változók értékei definiálva vannak) két különböző típusú értéket kaphat: nulla vagy negatív vagy pozitív szám.

Mivel a programot a weben használják, logikus lenne, ha a HTML-formátumban végrehajtott eredményt adta meg. Ugyanakkor szeretnék használni néhány logika a levezetése HTML-kód - ha az eredmény nem nulla - megjeleníti az eredmény egy kis kék szöveget, vagy megjeleníthet egy üzenetet, piros, mondván bocs, „fánk”, tobish nulla.

Tekintsük az adott probléma döntését a kezdőnek. A kezdő nem hallott semmit a szkript php-kódjának a sablon html-kódjáról való elválasztásáról, és valószínűleg így írt volna a programot:

Milyen hibákat tett a kezdő? Csinálta a PHP kódot (alkalmazás logikát) és a kijelző logikáját. Mi a Display Logic? Ez a feltétel az if-else vezérlő struktúrában van, amely a kapott eredmény függvényében adja ki a HTML-kódot. A leképezés logikája nem kapcsolódik az alkalmazás logikájához. ő nem is tudja, hogyan szerezte meg a $ eredményt - két változó hozzáadásával vagy komplex matematikai algoritmusok segítségével, majd az adatbázisból származó minták és harmadik féltől származó kiszolgálók igényeihez. Nem érdekli, a feltérképezés logikája egy másik feladat - bemutatni a felhasználónak a program eredményét.

Megjegyzés: többek között a kezdő a HTML-t a visszhangon keresztül HTML kódolásával dupla idézőjelben tartalmazza, ami a kettős idézőjelek elhagyásához vezetett a HTML-kódban. Kiderült, hogy egy HTML és PHP kód keveréke, nehéz olvasni, nehezen megőrizhető és teljesen nem szép.

Most képzeljük el, hogy a kezdő egy hasonló online stílusban ír egy egész online áruházat, összekeverve a mintákat az adatbázisból, az algoritmusokból és a HTML-ből. Ezután az elrendezés tervezőjének meg kellett változtatnia a HTML kód jelentős részét és a voilát - a kódot nem csak a kódoló támogatja, hanem maga a programozó is. Az üzleti logika összefonódik a leképezés logikáján, összekeveredve egy csomó lóban, emberekkel.

Előbb vagy utóbb a webes programozó tapasztaltabbá válik, és megérti, hogy még mindig el kell különíteni a HTML-kódot a PHP-kódtól. Proshtudirovan fórumok és egyes kézikönyvek (és talán még saját elképzeléseik esetén is), a programozó egy olyan programot ír le, amely a HTML sablonkódban van, bizonyos címkék helyett, például a% var% vagy. helyettesíti a PHP szkriptből nyert értékeket:

Mi történik? Az oldal fő kerete külön fájlban van, és már nincs társítva a PHP kóddal, jobb. De a script.php szkript még HTML kóddal és megjelenítési logikával rendelkezik. Kiderült, kicserélték a "szappannal". A HTML most már átterjed a parancsfájlra és a fő sablonra is, ami nem különbözik a fenti példa "Kezdő" kódjától.

A következő lépés - a végső stádiumban, amikor a programozó, hogy megpróbálja elválasztani PHP HTML elkezdi írni a saját sablon - egy sor szabályok sablon, amelyek hordozhatják legalább a minimális logikai műveletek nyert adatokkal a PHP-script:

A sablon most így néz ki:

A sablonban megjelenik egy IF-szerű konstrukció, amelyet az egyedi sablon super_mega_template_engine feldolgoz. És úgy tűnik, hogy működik - nyomtatja az értéket a testváltozó értékétől függően. De akkor a szórakozás elkezdődik - a megjelenítési logika összetettségével létre kell hoznia a sablonok struktúráit, amelyek kezelik a tömböket. Triviális, IF-szerű szintaxis elkezdődik a kihagyásnak - fészkelő szintek és még sok más szükséges. Végül a programozó jön a fórumra, és megkérdezi tőle, hogyan kell saját sablont írni a PHP-re.

És ez minden.

A PHP kifejezetten a webfejlesztéshez készült, és a kódot közvetlenül a HTML - php.net - ban lehet végrehajtani.

Mi következik ebből? A PHP - maga nem csak egy nagyon erős programozási nyelv, hanem egy önálló sablonmotor is. lehetővé téve a minőségi sablonok elkészítését az alkalmazás logikájának károsítása nélkül. Ehhez a következő feltételeknek kell teljesülniük:

  • Ne használjon alkalmazási logikát sablonokban, csak a parancsfájlból - skalárok, tömbök, objektumoktól kapott adatok átvitele. Nincs hívás az adatbázisba, a megjelenítési logikához nem kapcsolódó algoritmusok stb.
  • Használja a PHP kezelési struktúra sablonokat. szükséges a kijelző logikájához - IF / ELSEIF / ELSE, FOR / FOREACH, INCLUDE / REQUIRE.
  • Használjon alternatív szintaxist a kezelési struktúrákhoz - nagyon könnyen olvasható HTML sablonokat.
  • Ne próbálja meg használni a beépített funkciókat a sablonokban. Még akkor is, ha egy meglehetősen gyakran használt htmlspecialchars függvényt kell alkalmazni a sablonban. akkor ne lusta lenni ahhoz, hogy a segítő osztály statikus módszereit vagy a funkciót befedje. Ez a jövőben nagyobb teret enged a refactoringnek, és egyszerűen létrehozza az API egydimenziós stílusát.

A PHP sablonozásának stílusát tiszta sablonnak nevezik, azaz. tiszta sablon, amely a PHP saját képességén alapul.

A szkript és sablon tiszta sablon kódjának használata így nézhet ki:

Egyetértek, gyönyörű és nagyon egyszerű! Megosztottuk az alkalmazási logikát és a megjelenítési logikát. Most kóder, legalább egy kicsit ismeri a triviális ellenőrzési struktúrák bármilyen programozási nyelv, könnyen támogatják a HTML kódot, és a programozó nem szükséges tudni semmit arról, hogyan és hol az a program eredményeként jelenik meg. Megosztottuk a felelősségeket, és létrehoztunk egy könnyen módosítható támogatott kódot.

Természetesen a mi példánk nagyon egyszerű, de a tiszta sablon előnyei nagyon láthatók a valódi projekteken.

Egy sablon példája bonyolultabb: vendégkönyv, rekordok kiadása

Például nehezebb olyan vendégkönyv sablont hozni, amely rekordokat ad ki a $ paidbook_messages tömbből. Megjelenik a regisztrált és a regisztrálatlan felhasználók nyilvántartása. Ezenkívül megjelenítheti a rendszergazda üzenetét a vendégkönyvben (ha van ilyen) egy adott felhasználói üzenet alatt.

A tömb a következő kulcsokat tartalmazza:

A kívülről érkező szűrési adatok

Külön figyelmet érdemel a szűrési adatok témája. A webes programozás jó hangzása a felhasználó által "éppen olyan" állapotban lévő adatok rögzítése, és a kimeneten a feldolgozástól függően, a szükséges kimeneti formátumtól függően. Ha például ez egy szabványos webes alkalmazás, akkor el kell menekülnie a HTML-ben használt speciális karakterekből a htmlspecialchars függvény segítségével. ez megakadályozná az XSS-sebezhetőségeket. Ezzel szemben az Excel / Word formátumban nincs szükség a htmlspecialchars alkalmazására a webes alkalmazás adatbázisából. Ie Minden olyan formátum, amelyen az adatok kerülnek kiadásra, saját szabályokat szab meg az adatok feldolgozásához.

Megjelenítés eredménye a böngészőben:

Szükséges olvasási linkek

Kapcsolódó cikkek