Instrukcja
include(
)
służy
do
wczytania
i
wykonania
kodu
z
określonego
pliku
w
trakcie
wykonywania
skryptu
.
Poniższa
dokumentacja
dotyczy
także
instrukcji
require(
)
.
Obydwie
instrukcje
są
identyczne
w
każdym
szczególe
,
z
wyjątkiem
obsługi
błędów
.
include(
)
generuje
błąd
typu
Warning
,
podczas
gdy
require(
)
generuje
błąd
Fatal
Error
.
Innymi
słowy
,
funkcji
require(
)
używa
się
,
by
zatrzymać
przetwarzanie
skryptu
,
gdy
brakuje
jakiegoś
pliku
.
Jeżeli
zostanie
użyta
funkcja
include(
)
,
to
w
powyższej
sytuacji
skrypt
będzie
przetwarzany
dalej
.
Proszę
pamiętać
o
właściwym
ustawieniu
dyrektywy
include_path
.
Kiedy
plik
zostanie
wczytany
instrukcją
include(
)
,
zawarty
w
nim
kod
dziedziczy
zasięg
zmiennych
po
linii
,
w
której
znajdowała
się
instrukcja
wczytania
.
Każda
zmienna
dostępna
w
linii
z
instrukcją
include(
)
będzie
dostępna
we
wczytywanym
pliku
od
miejsca
wczytania
naprzód
.
Przykład
12-3
.
Podstawowe
wykorzystanie
include(
)
vars.php
?php
$kolor
=
'
zielone'
;
$owoc
=
'jabłko'
;
?
test.php
?php
echo
"Jedno
$kolor
$owoc"
;
/
/
Jedno
include
'vars.php'
;
echo
"Jedno
$kolor
$owoc"
;
/
/
Jedno
zielone
jabłko
?
|
|
Jeśli
instrukcja
wczytania
znajduje
się
wewnątrz
deklaracji
funkcji
,
to
cały
kod
zawarty
w
pliku
wczytywanym
będzie
zachowywał
się
,
jakby
był
zdefiniowany
wewnątrz
tej
funkcji
.
Znaczy
to
,
że
odziedziczy
zasięg
zmiennych
po
tej
funkcji
.
Przykład
12-4
.
Wczytywanie
wewnątrz
funkcji
?php
function
foo(
)
{
global
$kolor
;
include
'vars.php'
;
echo
"Jeden
$kolor
$owoc"
;
}
/
*
vars.php
znajduje
się
w
zasięgu
foo(
)
,
więc
*
*
$owoc
NIE
jest
dostępny
poza
zasięgiem
tej
*
*
funkcji
.
Natomiast
$kolor
jest
dostępny
,
*
*
ponieważ
został
zadeklarowany
w
zasięgu
*
*
globalnym
.
*
/
foo(
)
;
/
/
Jedno
zielone
jabłko
echo
"A
$kolor
$owoc"
;
/
/
Jedno
zielone
?
|
|
Na
początku
wczytywanego
pliku
parsowanie
wychodzi
z
trybu
PHP
do
trybu
HTML
i
wraca
do
trybu
początkowego
na
końcu
.
Z
tego
powodu
każdy
kod
wewnątrz
wczytywanego
pliku
będzie
wykonany
jako
kod
PHP
,
o
ile
będzie
zawarty
w
ważnych
znacznikach
początku
i
końca
kodu
PHP
.
Jeśli
"
URL
fopen
wrappers
"
są
włączone
w
PHP
(takie
jest
domyślne
ustawienie
)
można
podać
nazwę
pliku
do
wczytania
używając
adresu
URL
(przez
protokół
HTTP
lub
innym
obsługiwanym
sposobem
-
zajrzyj
do
Dodatek
I
Jeśli
"
URL
fopen
wrappers
"
są
włączone
w
PHP
(takie
jest
domyślne
ustawienie
)
można
podać
nazwę
pliku
do
wczytania
używając
adresu
URL
(przez
protokół
HTTP
lub
innym
obsługiwanym
sposobem
-
zajrzyj
do
Dodatek
I
aby
zapoznać
się
z
listą
obsługiwanych
protokołów
)
,
zamiast
podawać
ścieżkę
lokalną
.
Jeśli
podany
w
adresie
serwer
interpretuje
plik
docelowy
jako
kod
PHP
,
można
do
tego
skryptu
przekazać
zmienne
w
taki
sam
sposób
jak
przy
metodzie
GET
protokołu
HTTP
.
Ściśle
mówiąc
,
nie
jest
to
to
samo
,
co
wczytywanie
pliku
lokalnego
;
jest
to
wykonanie
pliku
na
zdalnym
serwerze
i
wklejenie
rezultatu
jego
działania
do
skryptu
wywołującego
.
W
tym
przypadku
,
rzecz
jasna
,
zasięg
globalny
zmiennych
nie
obejmuje
pliku
wczytywanego
tą
metodą
.
Ostrzeżenie
|
Wersja
PHP
pracująca
pod
systemami
Windows
nie
obsługuje
dostępu
do
zdalnych
plików
w
tej
funkcji
,
nawet
jeśli
opcja
allow_url_fopen
jest
włączona
.
|
Przykład
12-5
.
include(
)
i
protokół
HTTP
?php
/
*
Przykład
ten
zakłada
,
że
serwer
www.example.com
jest
tak
skonfigurowany
,
*
że
wykonuje
skrypty
w
plikach
.php
natomiast
nie
wykonuje
skryptów
w
plikach
*
.txt
.
Pojęcie
'
działa'
,
znaczy
tutaj
,
że
zmienne
$foo
i
$bar
są
dostępne
*
we
wczytywanym
pliku
*
/
/
/
Nie
działa
:
file.txt
nie
jest
traktowany
jak
skrypt
php
include
'http
:
/
/www.example.com
/
file.txt?foo=1
bar=2'
;
/
/
Nie
działa
:
PHP
będzie
szukać
pliku
o
nazwie
'
file.php?foo=1
bar=2
'
/
/
w
lokalnym
systemie
plików
include
'file.php?foo=1
bar=2'
;
/
/
Działa
.
include
'http
:
/
/www.example.com
/
file.php?foo=1
bar=2'
;
$foo
=
1
;
$bar
=
2
;
include
'file.txt'
;
/
/
Działa
.
include
'file.php'
;
/
/
Działa
.
?
|
|
Patrz także
Korzystanie ze zdalnych
plików
,
fopen()
i
file()
.
Ponieważ
include(
)
i
require(
)
są
specialnymi
konstrukcjami
językowymi
,
muszą
być
umieszczone
w
instrukcji
grupującej
,
aby
mogły
działać
w
instrukcji
warunkowej
.
Przykład
12-6
.
include(
)
i
instrukcja
warunkowa
?php
/
/
Ten
kod
jest
NIEPOPRAWNY
i
nie
zadziała
zgodnie
z
oczekiwaniami
.
if
(
$warunek
)
include
$plik
;
else
include
$inny
;
/
/
Natomiast
ten
kod
jest
POPRAWNY
.
if
($warunek
)
{
include
$plik
;
}
else
{
include
$inny
;
}
?
|
|
Obsługa
zwracanych
wartości
:
można
wywołać
instrukcję
return(
)
wewnątrz
wczytywanego
pliku
,
aby
zakończyć
jego
wykonywanie
i
powrócić
do
pliku
wywołującego
.
Można
też
zwracać
wartości
z
wczytywanych
plików
,
co
upodabnia
wczytywanie
plików
do
wykorzystywania
funkcji
.
Notatka
:
W
PHP
3
instrukcja
return(
)
może
pojawić
się
w
bloku
instrukcji
tylko
wówczas
,
jeśli
znajduje
się
on
wewnątrz
funkcji
.
W
takim
przypadku
,
oczywiście
,
return(
)
odnosi
się
do
tej
funkcji
a
nie
do
całego
pliku
.
Przykład
12-7
.
include(
)
i
wyrażenie
return(
)
return.php
?php
$var
=
'
PHP'
;
return
$var
;
?
noreturn.php
?php
$var
=
'PHP'
;
?
testreturns.php
?php
$foo
=
include
'return.php'
;
echo
$foo
;
/
/
wyświetla
'PHP
'
$bar
=
include
'noreturn.php'
;
echo
$bar
;
/
/
wyświetla
1
?
|
|
Zmienna
$bar
ma
wartość
1
,
ponieważ
wczytywanie
pliku
zakończyło
się
powodzeniem
.
Proszę
zauważyć
istotną
różnicę
pomiędzy
powyższymi
przykładami
.
Pierwszy
używa
instrukcji
return(
)
Pierwszy
używa
instrukcji
return(
)
wewnątrz
wczytywanego
pliku
,
natomiast
drugi
nie
.
Inne
możliwości
"
wczytania
"
plików
do
zmiennych
to
fopen(
)
,
file(
)
lub
przez
użycie
include(
)
razem
z
Funkcjami
Kontroli
Wyjścia
.
Patrz
także
require(
)
,
require_once(
)
,
include_once(
)
,
readfile(
)
,
virtual(
)
,
i
include_path
.