include()

Konstrukt include( ) vloží a ohodnotí specifikovaný soubor .

Níže popsané platí i pro require( ) . Tyto dva konstrukty 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( ) 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é 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 12-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 12-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 12-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

 
'http

 
:

 
/

 
/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

 
'http

 
:

 
/

 
/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é konstrukty , pokud se provádějí podmíněně , musíte je uzavřít do bloku .

Příklad 12-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 konstrukt 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 12-7 . include( ) a konstrukt 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 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 .