Forum und email
include

include()

Příkaz include() vloží a ohodnotí specifikovaný soubor.

Níže popsané platí i pro require(). Tyto dva příkazy jsou zcela totožné, kromě toho, jak zpracovávají chyby. include() produkuje Warning (varování), zatímco require() skončí s chybou typu Fatal Error. Jinými slovy, require() použijte tehdy, chcete-li, aby se při chybějícím souboru zastavilo zpracovávání. include() se tak nechová, skript bude nerušeně pokračovat. Ujistěte se také, že máte v pořádku nastavení include_path.

Pokud se vloží soubor, potom kód v něm obsažený dědí kontext proměnné řádku, kde byl vložen. Všechny proměnné dostupné na tomto řádku volajícího souboru budou (od této chvíle) dostupné i ve volaném souboru.

Příklad 16-3. Základní příklad -- include()

vars.php
<?php

$color
= 'zelené';
$fruit = 'jablko';

?>

test.php
<?php

echo "Vidím $color $fruit"; // Vidím

include 'vars.php';

echo
"Vidím $color $fruit"; // Vidím zelené jablko

?>

Pokud ke vložení dojde uvnitř funkce ve volajícím souboru, potom se všechen kód obsažený ve volaném souboru bude chovat, jako by byl definován uvnitř této funkce -- tedy v rámci kontextu proměnných funkce.

Příklad 16-4. Vkládání uvnitř funkcí

<?php

function foo()
{
global
$color;

    include
'vars.php';

    echo
"Vidím $color $fruit";
}

/* vars.php je v kontextu foo(), takže      *
* $fruit NENÍ dostupná mimo tento kontext. *
* Naopak $color JE, protože je deklarována *
* jako globální.                           */

foo();                        // Vidím zelené jablko
echo "Vidím $color $fruit";   // Vidím zelené

?>

Při vkládání souboru přejde parsing na začátku souboru z PHP režimu do módu HTML a na jeho konci se vrací zpět do módu PHP. Z tohoho důvodu musí být prováděný PHP kód ve vkládaném souboru uzavřen mezi platnou počáteční a koncovou PHP značku.

Pokud jsou v PHP povoleny "URL fopen wrappery" (což tak implicitně je), můžete specifikovat soubor ke vložení pomocí URL (přes HTTP) namísto lokálního umístění. Pokud přískušný server interpretuje požadovaný soubor jako PHP kód, proměnné mohou být odkazovány pomocí řetězce URL požadavku jako u HTTP GET. Není to úplně totéž jako vložení souboru s děděním kontextu proměnných od rodičovského souboru; skript běží na vzdáleném serveru a výsledek se potom vloží do lokálního skriptu.

Příklad 16-5. include() přes HTTP

<?php

/* Tento příklad předpokládá, že www.example.com je konfigurován k parsování *
* souborů .php a nikoli souborů .txt. Tedy, 'funguje' zde znamená, že       *
* proměnné $foo a $bar jsou dostupné uvnitř vkládaného souboru.             */

// Nefunguje; file.txt nebyl na www.example.com zpracován jako PHP
include 'https://www.example.com/file.txt?foo=1&bar=2';

// Nefunguje; hledá soubor 'file.php?foo=1&bar=2' v lokálním systému souborů.
include 'file.php?foo=1&bar=2';

// Funguje.
include 'https://www.example.com/file.php?foo=1&bar=2';

$foo = 1;
$bar = 2;
include
'file.txt';  // Funguje.
include 'file.php';  // Funguje.

?>
Související informace -- viz také Vzdálené soubory, fopen() a file().

Protože include() a require() jsou speciální jazykové příkazy, pokud se provádějí podmíněně, musíte je uzavřít do bloku.

Příklad 16-6. include() a podmíněné bloky

<?php

// Toto je ŠPATNĚ a (jak bylo řečeno) nebude to fungovat.
if ($condition)
    include
$file;
else
    include
$other;


// Tohle je SPRÁVNĚ.
if ($condition) {
    include
$file;
} else {
    include
$other;
}

?>

Obsluha návratů: Uvnitř vkládaného souboru lze provést příkaz return() k ukončení provádění souboru a návrat do volajícího skriptu. Je tedy možné z vložených souborů vracet hodnoty. Můžete vzít hodnotu volání include, jako by to byla normální funkce.

Poznámka: V PHP 3 se return nesmí objevit uvnitř bloku, pokud to není funkční blok; tehdy však se však return() týká této funkce a ne celého souboru.

Příklad 16-7. include() a příkaz return()

return.php
<?php

$var
= 'PHP';

return
$var;

?>

noreturn.php
<?php

$var
= 'PHP';

?>

testreturns.php
<?php

$foo
= include 'return.php';

echo
$foo; // vypíše 'PHP'

$bar = include 'noreturn.php';

echo
$bar; // vypíše 1

?>

$bar má hodnotu 1, protože příkaz include byl úspěšný. Všimněte si rozdílu mezi výše uvedenými příklady. První používá ve vkládaném souboru return(), druhý nikoli. Dalšími způsoby, jak přiřadit hodnotu souboru do proměnné, jsou funkce fopen(), file() a použití include() společně s funkcemi řízení výstupu.

Viz také require(), require_once(), include_once(), readfile(), virtual(), a include_path.