Képzeletbeli szakasz php. Fájlok befoglalása PHP-ben az include és a demand használatával. Az include _once és a request _once használata

03.04.2021 Biztonság

Egy cikk, amely figyelembe veszi a szakasz HTML elemét a szakaszolási kategóriából.

A szakaszelem célja

A szakasz elem egy olyan szakasz létrehozására szolgál egy dokumentumban, amely néhány aktuális tartalmat csoportosít. A dokumentum minden szakaszánál fel kell tüntetni annak címét (tárgyát). Ez általában címsorokkal történik (h1 - h6 elemek).

szakasz címe

A szakasz tartalma...

szakaszelemek általában a következő esetekben használatosak:

  • szakaszok megjelölésére egy szakaszon belül. Például egy cikk fejezeteinek, párbeszédpanelek füleinek, szakdolgozat szakaszainak megjelölésére stb.
  • több szakaszt egy tematikus csoportba csoportosítani. Például csoportosíthatja a webhely legfrissebb híreit, egy cikkhez fűzött megjegyzéseket stb.

Így a szakaszelemet csak akkor szabad bizonyos tartalomhoz használni, ha van címsora, és valami más része.

A szakaszelem alkalmazása

Vegyünk például egy oldal kódrészletet, amely megjegyzésekkel ellátott cikket tartalmaz. A felhasználó által az oldalon hagyott megjegyzések mindegyike tartalmaz valamilyen befejezett tartalmat, ezért cikkelemnek tekinthető. De ugyanakkor minden hozzászólás valamilyen témacsoportot képvisel, ezért elhelyezhető a szekcióelemben, pl. adott elem csoportosítja az oldalon található összes megjegyzést.

Cikk címe

Hozzászólások

Megjegyzés címe

Megjegyzés szövege...

Megjegyzés címe

Megjegyzés szövege...

A cikk címe Megjegyzések Hozzászólás címe Hozzászólás címe

Fontolja meg például szakaszelemek használatát egy cikkelemen belüli szakaszok létrehozásához:

A könyv neve

Első fejezet

Második fejezet

Harmadik fejezet

A melléklet

B melléklet

A fenti példa a következő struktúrával (vázlattal) rendelkezik:

Könyvcím Első fejezet Második fejezet Harmadik fejezet A függelék B függelék

Korlátozások a szakaszelem használatakor

A HTML 5 szakaszeleme nem általános elem a tartalom csoportosításához; nem használható olyan tartalom becsomagolására, amely tetszik. Fő célja, hogy szemantikát adjon a dokumentumhoz, és létrehozza annak szerkezetét (vázlatát).

Ha egy szerzőnek csak azért kell csoportosítania a tartalmat, hogy stílusa legyen, vagy JavaScriptben dolgozzon vele, akkor a legjobb a div elem használata. A div elem a szekció elemmel ellentétben nem ad szemantikát a dokumentumhoz, és nem vesz részt annak szerkezetének (vázlatának) létrehozásában.

Különbség a szakasz és a cikk elemei között

A szakasz- és cikkelemek, bár látszólag nagyon hasonlóak, eltérő szemantikai jelentéssel bírnak. A cikk elem a teljes, önálló és az oldal többi tartalmától elkülönült tartalom csoportosítására szolgál. A szakaszelemnek pedig más a szemantikai jelentése, olyan tartalmakat hivatott csoportosítani, amelyek valami másnak szerves részét képezik.

De honnan tudja a szerző, hogy milyen tartalom az oldalon? Nézzük meg ezt egy példacikkrészlet segítségével. A töredék egy cikk része, ezért a szakaszelemet kell használni a tartalom csoportosítására. De ugyanaz a töredék, amelyet már kommentárként hagytak, valami egész, teljes lesz. Ezért ebben az összefüggésben a cikk elem használható csoportosítására. De persze az ellenkezőjéről is lehet vitatkozni. Ezért a legtöbb esetben az Ön szubjektív szerzői véleményétől függ, hogy melyik elemet használja a tartalom csoportosításához. De a legfontosabb ebben a megközelítésben a választott pozíció megtartása. Ezért minél következetesebb a szerző a szerkezet megalkotásában, annál több értelmet tud belefektetni.

Amikor saját készítésű oldalakat hozunk létre (keretrendszerek, CMS és egyéb divatos dolgok használata nélkül, amelyek megkönnyítik a webfejlesztők életét), azzal a problémával szembesülünk, hogy sok oldal esetén módosítani kell az oldalon.

Annak érdekében, hogy ne kelljen ugyanazokat az oldalrészeket módosítanunk az egyes oldalfájlokban, használhatunk kényelmes PHP-utasításokat, amelyek lehetővé teszik, hogy egyetlen kódsorral minden oldalra felvegyük a szükséges kódot tartalmazó fájlokat. Ezután a mellékelt fájl tartalmának megváltoztatásával megváltoztatjuk a kódot az oldal összes oldalán. Kényelmes, akárhogyan is nézzük.

Most nézzük meg részletesebben a fájlok összekapcsolásának módjait:

Az include és a követelmény használata

Nem fog tudni alapvető különbséget találni e két utasítás között minden vágyával, de vannak árnyalatok:

Ha hiba történik a request parancs végrehajtása során, az elemző végzetes hibaválaszt kap, és az oldalkód végrehajtása leáll, míg az include csak figyelmeztetést ad, és a fájl fut tovább (a fájl egyszerűen nem szerepeljen).

Vegyünk egy egyszerű példát a téma jobb megértéséhez.

Megvan a mini-webhelyünk, ahol a fejléc és a lábléc minden oldalon azonos, de a dokumentum törzse megváltozik.

Elkészítjük a header.php és a footer.php fájlokat, amelyekben elhelyezzük azt a kódot, amely minden oldalon azonos lesz, az index.php és newpage.php fájlokban pedig összekapcsoljuk a statikus részeket. Ennek eredményeként a következőket kapjuk:

header.php tartalom

< header> < nav> < a href= "newpage1.php" title= "menü tétel" >menü tétel < a href= "newpage2.php" title= "menü tétel" >menü tétel < a href= "newpage3.php" title= "menü tétel" >menü tétel

lábléc.php tartalom

< footer> < p>Mi készítettük

Az oldal egyéb oldalainak tartalma

Minisite

Sok hasznos információ

Oldalunk betöltése eredményeként a következő képet kapjuk:

Amint látjuk, minden remekül működik.

Kérjük, vegye figyelembe, hogy a példát a helyi Denwer szerveren futtattuk, mivel a PHP működéséhez támogatással rendelkező szerverre van szükség. Ha létrehoz egy webhelyet egy egyszerű mappában a számítógépen, semmi sem fog működni.

A vizsgált példában a szükséges fejlécet használtuk a csatlakozáshoz, és az include láblécet. Ön dönti el, hogy mit használ a webhelyein. Mint már említettük, nincs sok különbség köztük. Kivéve, ha a követelmény valamivel szigorúbb utasításnak minősül.

Valójában a vonal egyszerűen bemásolja a fájl teljes tartalmát, az általunk megadott elérési utat, abba a dokumentumba, amelyben található.

Az include _once és a request _once használata

A webhelyen végzett munka során problémák adódhatnak abból a tényből, hogy ugyanaz a kód többször szerepel egy fájlban.

Tegyük fel, hogy ez annak köszönhető, hogy többen dolgoztak az oldalon, és amikor a kódokat kombinálták, akkor egy ilyen incidens jött ki ...

Az ilyen problémák lehetőségének kiküszöbölése érdekében a fejlesztők gyakran használják az include _once and request _once utasításokat. Működési elvük pontosan ugyanaz, mint az include és a require-é, de ha az ilyen utasításban szereplő fájl már össze van kapcsolva a miénkkel, akkor az újracsatlakozás nem történik meg.

Ennek a módszernek a hátrányai közé tartozik, hogy lassabb és számításilag drágább, mint az elődjei, amelyek tartalmazzák és megkövetelik, mivel szükségessé válik az összes beépített fájl emlékezése és összehasonlítása a kódduplikáció elkerülése érdekében.

Egy megjegyzésre

  • Annak érdekében, hogy kényelmesebben meg lehessen különböztetni a webhelyoldal fájljait és a töredékeik fájljait, amelyeket belefoglalunk, általában a mellékelt fájlok egy inc részt adnak a névhez. Példánkban ezt a megközelítést figyelembe véve a header.inc.php fájlt a header.php fájlból kapjuk, és így tovább. Ez a megközelítés nagyban leegyszerűsítheti a webhely szerkezetének megértését a jövőben.
  • Az általunk felvett fájl kódja örökli annak a sornak a hatókörét, amelyben szerepel. A Tobish csak az oldalon belül globális hatókörrel rendelkezik, a függvényen belül pedig helyi hatókörrel.
  • Bárhol használhatjuk az include-ot a request-el. Még a szkripteken belül is.
Dokumentum tartalomjegyzék

1. config_load függvény

Szintaxis:
(config_load file="file_name")

Ez a funkció a konfigurációs fájlok változóinak sablonba való betöltésére szolgál. Ennek a függvénynek a betöltendő fájl nevén kívül több további paramétere is lehet. Például a szakasz paraméter, amely megadja a betöltendő szakasz nevét. Ezekről és más lehetőségekről további információkat a Smarty dokumentációjában talál.

Példa:
(config_load file="task.conf")

2. Capture funkció

Szintaxis:

(capture name="blokk_neve"
assign="változónév") ...
(/elfog)

Ennek a funkciónak az a célja, hogy a sablon kimenetét egy változóba gyűjtse a képernyőn való megjelenítés helyett.

Bármi, ami (capture name="varname") és (/capture) között van, egy varname nevű változóba lesz írva. Az így rögzített tartalom a $smarty.capture.varname speciális változó használatával használható sablonban, ahol a varname a rögzítési függvény name attribútuma számára átadott érték. Ha nincs megadva változónév, akkor a rendszer az alapértelmezett értéket használja.

A második hozzárendelés paraméter adja meg annak a változónak a nevét, amelyhez a rögzített kimeneti érték hozzá lesz rendelve. Ez a paraméter, akárcsak a név, nem kötelező.

3. szakasz funkció

Szintaxis:

(szakasz neve="szakasz_neve"
loop="változó_kiszámítandó_az_iterációk_száma"
[,start="start_pozícióindex"]
[, step="step"] [,max="max_iterations"]
[,show="show_section"] )...
(/ szakasz)

A szakasz egy hurok egy tömb elemeinek bejárására. A szükséges paraméterek a name, amely a szakasz nevét adja meg, és a ciklus, amely egy változó, amely meghatározza a ciklus iterációinak számát.

A ciklus általában egy tömbváltozó, és egy szakasz iterációinak száma megegyezik a tömb elemeinek számával. A cikluson belüli változó megjelenítéséhez meg kell adnia a szakasz nevét szögletes zárójelben a változó neve után.

(szakasz neve=művészeti hurok=$cím)

Cím: ($title)

(/ szakasz)

15.8. példa. Hurok a tömb elemei közötti iterációhoz

4. foreach funkció

Szintaxis:

(foreach from="tömb_neve"
item="jelenlegi_elem_neve")
... (/az egyes)

Ezenkívül használhat további attribútumkulcsot - a kulcs neve a tömb aktuális eleméhez és neve - a ciklus neve, amellyel hozzáférhet a tulajdonságaihoz. A from és item attribútumok kötelezőek.

A foreach hurkok a szakaszhurkok alternatívája. A foreach függvény nagyon hasonlít a PHP foreach ciklusához.
(foreach from=$articles item=art)
Cím: ($art)

(/az egyes)

Példa 15.9. foreach hurok

A foreach ciklusoknak megvannak a saját tulajdonságai. Ezeket a következőképpen érhetjük el: ($smarty.foreach.foreachname.varname), ahol a foreachname a hurok name paramétere által adott neve, a varname pedig a tulajdonság neve.

5. If, elseif, else kijelentés

Szintaxis:

(ha kifejezés) action_block
(elseif kifejezés1) action_block1
(egyéb) action_block2
(/ha)

Az operátor működése szinte hasonló a PHP nyelv if...elseif...else operátorához.

A következő összehasonlító operátorok használhatók a kifejezésekben: eq, ne, neq, gt, lt, lte, le, gte, ge, páros, páratlan, nem páros, nem páratlan, nem, mod, div by, páros által, páratlan, ==, !=, >,<, <=, >=. Mindegyiket szóközzel kell elválasztani a környező értékektől. A kifejezésekben zárójelek használhatók, és PHP függvények hívhatók meg.

(ha $name eq "Vasya")
Üdvözöljük Vasya.
(elseif $name eq "Petya")
Isten hozott, Petya.
(más)
Üdvözöljük. És te ki vagy?
(/ha)

15.10. példa. if, elseif, else állítások

(* ez a példa nem működik, mert nincsenek szóközök az összehasonlító operátorok körül *)
(ha $name=="Vasya" || $name=="Péter")
...
(/ha)
Példa 15.11. Törött példa

). Mindegyik címke (szakasz) kell egy pár (/ szakasz). A szükséges paraméterek névés hurok. A ciklusnév (szakasz) bármi lehet, betűkből, számokból és aláhúzásjelekből állhat. Ciklusok (szakasz) beágyazhatók, és a beágyazott (szakasz) neveknek egyedinek kell lenniük egymás között. Változó hurok(általában értéktömb) határozza meg a ciklus iterációinak számát. Ha változókat nyomtat egy szakaszon belül, a szakasz nevének meg kell jelennie a változó neve mellett szögletes zárójelben. (másik szakasz) végrehajtva, ha a paraméter hurok nem tartalmaz értékeket.

Attribútum neve Típusú Kötelező Alapértelmezett Leírás
név húr Igen n/a Szakasz neve
hurok vegyes Igen n/a A ciklus iterációinak számát meghatározó érték.
Rajt egész szám Nem 0 Annak a pozíciónak az indexe, ahonnan a hurok indul. Ha az érték negatív, akkor a kezdőpozíciót a tömb végétől számítjuk. Például, ha a ciklusváltozónak 7 eleme van, és a start attribútum értéke -2, akkor a kezdőindex 5 lesz. Az érvénytelen értékeket (a tömbön kívüli értékeket) a rendszer automatikusan a legközelebbi érvényes értékre csonkolja.
lépés egész szám Nem 1 A lépésérték, amely a tömbön keresztül történő iterációhoz használatos. Például a step=2 megadja a tömb bejárását a 0,2,4 elemekkel... Ha a lépés negatív, akkor a tömb az ellenkező irányba halad.
max egész szám Nem 1 A ciklusiterációk maximális száma.
előadás logikai érték Nem igaz Meghatározza, hogy ez a szakasz megjelenjen-e vagy sem

jegyzet

A Smarty 1.5.0 óta a munkamenettulajdonság-változó szintaxisa (%szakasznév.varnév%) értékről ($smarty.section.sectionname.varname) módosult. A régi szintaxis továbbra is támogatott, de csak példákat fog látni az új szintaxisra.

Az index a tömb aktuális indexének megjelenítésére szolgál, nullától kezdődően (vagy a start attribútumtól, ha meg van adva), és eggyel növekszik (vagy a step attribútum értékével, ha volt megadva).

Műszaki megjegyzés

Ha a step és start attribútumok nincsenek megadva, akkor az index megegyezik az iterációs szakasz attribútumával, azzal a különbséggel, hogy 1 helyett 0-val kezdődik.

Az iteráció a ciklus aktuális iterációs számának megjelenítésére szolgál.

jegyzet

Ez az érték független a start, step és max tulajdonságoktól, ellentétben az index tulajdonsággal. Ezenkívül az iterációk egytől kezdődnek, nem nullától, mint az indexek. A rownum az iterációs tulajdonság szinonimája, ugyanúgy működnek.

7.38. példa. tulajdonság (szakasz) iterációja

assign("custid",$id); ?> (szakasznév=cu loop=$custid start=5 step=2) iteration=($smarty.section.cu.iteration) index=($smarty.section.cu.index) id=($custid)
(/ szakasz)

A példa futtatásának eredménye:

Iteráció=1 index=5 id=3005
iteráció=2 index=7 id=3007
iteráció=3 index=9 id=3009
iteráció=4 index=11 id=3011
iteráció=5 index=13 id=3013
iteráció=6 index=15 id=3015

Ez a példa az iterációs tulajdonságot használja a táblázat fejlécének minden ötödik sorban történő megjelenítéséhez (az (if)-t mod operátorral használja - modulo).

(szakasznév=co loop=$contacts) (ha $smarty.section.co.iteration % 5 == 1) (/ha) (/ szakasz)
Név>itthonsejtEmail
Kilátás ($contacts.name) ($contacts.home) ($contacts.cell) ($contacts.email)