include( )

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

 


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