PHP – šetříme si práci příkazem include v PHP

21. července 2000

Každý, kdo někdy tvořil trochu rozsáhlejší web, určitě narazil na problém údržby spousty stránek, které mají řadu shodných prvků (typicky záhlaví, patičku a navigaci) a liší se pouze v samotném obsahu. Práci s údržbou takovéhoto webu nám v PHP výrazně ušetří příkaz include.

Tento příkaz slouží k vkládání jiného souboru (HTML nebo PHP skriptu) do právě zpracovávané stránky. Jeho syntaxe je velmi jednoduchá – vše může vypadat např. takto:

include „adresar/soubor.inc“;

Příkaz vloží do právě zpracovávané stránky obsah souboru soubor.inc v adresáři adresar. Efekt bude úplně stejný, jako kdyby byl obsah tohoto souboru umístěn přímo ve stránce namísto příkazu include. Adresa vkládaného souboru se udává relativně ke zpracovávanému skriptu. Je-li tedy vkládaný soubor ve stejném adresáři jako skript, stačí jako parametr použít pouze jeho název. Na příponě vkládaného souboru nijak zvlášť nezáleží, přípona .inc je však nejobvyklejší. Pokud vkládaný soubor obsahuje nějaký PHP skript, je dobré mu dát např. příponu .php, aby se nebylo možné dostat ke zdrojovému kódu tak, že by někdo uhádl adresu vkládaného souboru (ta se dá odvodit např. z případné chybové hlášky, pokud je vkládaný soubor třeba dočasně nedostupný).

Jak si tedy co nejvíce zjednodušit údržbu stránek, jejichž části se opakují? Předpokládejme, že typická stránka našeho webu má takovouto strukturu:

záhlaví
levý sloupec – standardní navigace
pravý sloupec
patička

Typicky se stránky budou lišit pouze v pravém sloupci, naším cílem je tedy mít každou neproměnnou část uloženou na serveru právě jednou, a nikoliv jednou v každé stránce (takže každá změna v takové společné části znamená editaci desítek až stovek souborů). V zásadě máme dvě možnosti, jak postupovat.

První možnost je uchovat stávající stránky (samozřejmě musí mít příslušnou příponu, třeba .php) a všechny standardní části vkládat příkazem include. Stránky pak mohou vypadat nějak takto:

include „zahlavi.inc“;
include „navigace.inc“;
pravý sloupec
include „paticka.inc“;

Pokud budeme chtít např. přidat položku do menu, stačí jednoduchá změna v souboru navigace.inc, nemusíme zasahovat do každé stránky.

Druhá možnost (kterou používám já osobně), je naopak vkládat do stránky pouze proměnlivou část. To, který soubor se má vložit, se předává jako parametr za otazníkem v příslušném odkazu. Celý web je pak tvořen pouze jedním souborem index.php, který může vypadat nějak takto:

záhlaví
levý sloupec – standardní navigace
$filename = $id . „.inc“;
if (File_Exists ($filename)):
include $filename;
else:
include „uvod.inc“;
endif;
patička

Skutečné proměnlivé obsahy stránek máme uloženy v souborech s příponou .inc (např. uvod.inc, odkazy.inc, ofirme.inc apod.). Příslušné odkazy jsou na index.php?id=uvod, index.php?id=odkazy, index.php?id=ofirme. Samotný skript pak pouze zkontroluje, zda existuje soubor s názvem předaným v proměnné $id a příponou .inc – pokud ano, vloží ho do stránky, pokud ne (je zavolán pouze index.php bez parametru nebo návštěvník používá jako parametr název neexistujícího souboru), vloží se úvodní strana (soubor uvod.inc) – na tu tedy můžeme odkazovat pouze jako na index.php.

Shrnutí anebo co si je třeba pamatovat

  • Příkaz include slouží k vkládání obsahu souboru do stránky.
  • Adresa vkládaného souboru se udává relativně vzhledem ke zpracovávanému skriptu.
  • Chceme-li si zjednodušit údržbu složitého webu, můžeme buď vkládat do stránek pomocí include společné části, nebo naopak do jedné stálé stránky vkládat proměnlivý obsah.

V dalším díle se podíváme na to, jak si lze v PHP tvořit vlastní funkce.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

2 komentářů

  1. Petr

    Pro 15, 2009 v 19:55

    Dobrý den,
    prosím o radu: použil sem poslední způsob vložení (www.montyho.cz) a u vloženého článku nefuguje kódování.. co s tím?
    Díky, Petr

    Odpovědět
  2. norwi

    Kvě 13, 2013 v 9:47

    do hlavicky musis vlozit toto

    samozrejme kodovani si uprav podle tveho

    Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *