|
|
PHP (angielski akronim rekurencyjny, którego rozwinięcie to PHP Hypertext Preprocessor), pierwotnie nazwany Personal
Home Page - skryptowy język programowania, służący przede wszystkim do tworzenia dynamicznych stron WWW i wykonywany w
tym przypadku po stronie serwera, z możliwością zagnieżdżania w HTML (bądź XHTML). PHP jest podobny w założeniach do
dużo starszego mechanizmu SSI (Server Side Includes), jednak jest w stosunku do SSI nieporównanie bardziej rozbudowany.
Udostępniany jest na zasadach licencji open-source. Jego składnia bazuje na językach C, Java i Perl.
SQL (ang. Structured Query Language) to strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz
do umieszczania i pobierania danych z baz danych.
Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi
zarządzania bazą danych DBMS.
Jest to język programowania opracowany w latach siedemdziesiątych w firmie IBM. Stał się on standardem w komunikacji z
serwerami relacyjnych baz danych. Wiele współczesnych systemów relacyjnych baz danych używa do komunikacji z
użytkownikiem SQL, dlatego mówi się, że korzystanie z relacyjnych baz danych, to korzystanie z SQL-a.
Apache jest otwartym serwerem HTTP dostępnym dla wielu systemów operacyjnych (m.in. UNIX, GNU/Linux, BSD,
Microsoft Windows). Po angielsku słowo Apache wymawia się epaczi, co brzmi tak samo jak a patchy (server), co było
określeniem tego serwera we wczesnym stadium jego rozwoju w 1995 roku, kiedy był on głównie zbiorem poprawek (patch)
nałożonych na serwer HTTP o nazwie NCSA.
Apache jest najszerzej stosowanym serwerem HTTP w Internecie. W maju 2003 jego udział wśród serwerów wynosił 62%. W
połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych
środowisk w firmach oferujących miejsce na serwerach sieciowych.
|
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 16-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 16-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 M 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 |
|
PHP w wersji starszej niż
4.3.0, pracujące pod kontrolą systemów Windows, nie
obsługują dostępu do zdalnych plików w tej funkcji,
nawet jeśli opcja allow_url_fopen
jest włączona.
|
Przykład 16-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 16-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 16-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.
|