PHP kézikönyv Előző 12. Fejezet. Vezérlési szerkezetek Következő Az include() beilleszti és feldolgozza a megadott fájlt. Az alábbiak igazak a require() -ra is. A require() és az include() megegyezik egymással a hibakezelését leszámítva. Az include() nem fatális hibát, figyelmeztetést generál, a require() viszont fatális hibát Az include() nem fatális hibát, figyelmeztetést generál, a require() viszont fatális hibát jelez. Magyarán, ahol az igényelt fájl nemlétekor a futást meg kell szakítani, ajánlott a require(). Az include() nem így viselkedik, a hibától függetlenül a szkript futtatása folytatódik. Bizonyosodj meg, hogy a include_path helyesen van beállítva! A fájl beillesztése során a megadott fájl örökli az include() helyén érvényes változó hatáskört. Bármely változó, amely azon a ponton elérhető, elérhető a beillesztett fájlban is. Példa 12-3. Egyszerű include() példa valtozok.php ?php $szin = 'zöld'; $gyumolcs = 'alma';? teszt.php ?php echo "Egy $szin $gyumolcs"; / / Egy include 'valtozok.php'; echo "egy $szin $gyumolcs"; / / Egy zöld alma? Függvény belsejében a megadott fájlban szereplő kód úgy fog viselkedni, mintha az magában a függvényben szerepelt volna. Ez azt jelenti, hogy a fájl örökli a változók érvényességi körét. Példa 12-4. Függvényen belüli beillesztés ?php function ize() {global $szin; include 'valtozok.php'; echo "Egy $szin $gyumolcs";} / * valtozok.php az ize() függvény hatóköréébe esik, * * így a $gyumolcs nem elérhető a főggvényen kívül. * * A $szin igen, mivel globálisnak lett deklarálva. * / ize(); / / Egy zöld alma echo "Egy $szin $gyumolcs"; / / Egy zöld? Ha egy fájlt beillesztünk az include() -dal vagy require() -ral, akkor a célfájl elején az elemző kilép a PHP módból HTML módba, majd visszaáll PHP módba a fájl végén. Ennek okán bármely beillesztendő fájlban levő PHP kódot közre kell fogni egy érvényes PHP kezdő - és zárójelöléssel. Ha az include() -dal hívott fájl HTTP-n keresztül érkezik az "fopen wrapper "-ek használatával, és a célszerver PHP kódként feldolgozza a fájlt, akkor átadhatsz változókat a hívott fájlnak HTTP GET lekérési formában. Ez nem teljesen ugyanaz, mintha a include() -dal hívott fájl örökölné a helyi változókat, mivel a szkript valójában a távoli szerveren fut le, és a futási eredmény kerül beépítésre a helyi szkriptbe. Figyelem A PHP Windows rendszeren futó verziója jelenleg nem támogatja a távoli állomány elérést e függvény használatakor, még akkor sem, ha az allow_url_fopen engedélyezett. Példa 12-5. include() HTTP-n keresztül /* Ezek a példák feltételezik, hogy a szerver be van állítva a .php * * fájlok feldolgozására és nincs beállítva a .txt fájlok feldolgozására * * A 'működik' azt jelenti, hogy az $ize és $bigyo változók elérhetőek * * a hívott fájlban. * / / / Nem működik: a file.txt nem kerül feldolgozásra include ("http: / /szerver / file.txt?ize=1 bigyo=2"); / / Nem működik: egy 'file.php?ize=1 bigyo=2 'nevű fájlt keres a helyi gépen include ("file.php?ize=1 bigyo=2"); / / Működik include ("http: / /szerver / file.php?ize=1 bigyo=2"); $ize = 1; $bigyo = 2; include ("file.txt"); / * Működik * / incluie ("file.php"); / * Működik * / Mivel az include() és a require() különleges nyelvi elem, kapcsos zárójelekkel kell közrefogni, ha egy feltételes utasításon belül szerepel. Példa 12-6. include() feltételes blokkon belül /*Ez NEM JÓ, és nem a várt eredményt adja * / if ($feltetel) include($file); else include($other); / * Ez a HELYES * / if ($feltetel) {include($file);} else {include($other);} return utasítást lehet elhelyezni egy include() -olt fájlban annak érdekében, hogy a kiértékelés ott befejeződjön, és visszaadjon egy értéket a hívó szkriptnek. A visszatérési értéket ugyanúgy használhatod, mint egy közönséges függvénynél. Megjegyzés: PHP 3, a return nem jelenhet meg függvény blokkon kívül máshol, amely esetben a függvénybő ltörténő visszatérést jelöli. Példa 12-7. Az include() és a return() utasítás return.php ?php $var = 'PHP'; return $var;? noreturn.php ?php $var = 'PHP';? testreturns.php ?php $ize = include 'return.php'; echo $ize; / / kiírja: 'PHP' $bigyo = include 'noreturn.php'; echo $bigyo; / / kiírja: 1? $bigyo értéke 1, mert a beillesztés sikeres volt. Figyeld meg a különbséget a két fenti példa között. Az első a return() segítségével visszaadott egy értéket, a második nem. Létezik még néhány egyéb módja is változók beemelésének a fopen(), file() segítségével, vagy include() és Kimenet szabályzó függvények együttes használatával. Lásd még: require(), require_once(), include_once(), readfile() és virtual()! Előző Tartalom Következő Fel