includePodręcznik PHPPoprzedniRozdział 12. Struktury kontrolneNastępnyinclude()
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 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żenieWersja
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() 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.
PoprzedniSpis treściNastępnyrequire()Początek rozdziałurequire_once()
Wyszukiwarka
Podobne podstrony:
function includefunction includefunction include oncefunction include oncefunction get included filesfunction get included filesfunction fdf next field namefunction ccvs voidfunction mysql errorfunction mcal event set endfunction mcrypt cbcFunctional Origins of Religious Concepts Ontological and Strategic Selection in Evolved Mindswięcej podobnych podstron