Php sablonok - ez nem nehéz!
Úgy döntöttem, hogy egy kis lendületet adok a programozási készségeimnek a PHP-ben. előbb-utóbb el kell kezdeni, különösen azért, mert már hosszú ideje ismerem a PHP alapjait. Elvileg nem tapasztaltam nehézséget a PHP-vel való együttműködés során, meglepő módon, de még az első alkalommal, amikor sikerült telepíteni a Windows alatt. bár szó szerint 3-4 évvel ezelőtt problémám volt ezzel :)
Először is, úgy döntöttem, hogy kitalálok egy kerékpárt (saját, háromkerekű, pici és egy zseblámpa :). ), és többé-kevésbé kényelmesebbé teszi a PHP-kód elválasztását a tervezéstől. Valójában ezt a felülvizsgálat tárgyalja.
A sablon egy közönséges HTML-fájl, de a szokásos html címkék mellett. tartalmaznia kell speciális címkéket a tartalomhoz. Úgy döntöttem, ezt a következő stílusban teszem meg:
Ez egy egyszerű sablon példája
Normál HTML. semmi különös.
Mint láthatja, ez egy egyszerű HTML-kód, de a 9. sorban van egy "címke"
Emiatt egy sablonban a tartalom tetszőleges számú blokkja lehet.
Sablonkezelési osztály
Menjünk át egy olyan osztályra, amely kezeli az egészet. Az ötlet szerint az osztálynak a következő paramétereket kell tennie:
Ez minimális, de természetesen a paraméterek száma is könnyedén növelhető.
Ezenkívül az osztálynak is össze kell ragasztania az adatokat, és ki kell adnia az ügyfélnek. Ez egy kicsit olyan, mint a MasterPage az ASP .NET-ben. bár persze, hogy a MasterPage még mindig messze van, de ez nem arról szól.
De talán hagyjuk az üzletet, pontosan, az osztály testéhez:
A 18. sor inicializálja az osztályt. A 26. sorban a meghatározott sablonfájlt fogadó funkció betölti, beilleszti a tartalmat és visszaadja az eredményt.
A sablonfájl a 28. sorban kerül letöltésre, majd a betöltött címkés sablonban 39 sor keresésre kerül
Mentse ezt az osztályt egy különálló fájlba, például templateController.php.
Sablonokkal való munka
Most próbáljuk meg alkalmazni ezt az egészet munkánkban. Az első lépés egy sablonfájl létrehozása, a masterPage.html-nak hívása. egy tartalmi blokkot tartalmaz - MainContent.