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
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
.