Spis treści
Oddzielanie instrukcji
Jak już można zauważyć w przykładach z poprzedniego rozdziału, jedną z głównych zasad języka PHP (jak i wielu innych – m. in. C i Perla) jest umieszczenie na końcu każdej instrukcji (niekoniecznie linii) znaku średnika (’;’). Można go pominąć tylko jeśli w danym miejscu następuje przejście do trybu HTML, a więc po danej linii następuje symbol przejścia do trybu HTML.
Przykład 2.1. Oddzielanie instrukcji
<?php echo "To jest test"; ?> <?php echo "To jest test" ?>
Komentarze
Czasem zachodzi potrzeba oznaczenia czegoś w kodzie, dla kogoś innego czy nawet dla siebie samego (zwłaszcza jeśli pracuje się nad dużym projektem można się pogubić). Wtedy można skorzystać z jednej z kilku metod oznaczania, dzięki którym parser PHP będzie wiedział, że dany tekst nie jest częścią skryptu i można go zignorować. Komentarze przydają się także do tymczasowego „wyłączania” niektórych linii kodu. PHP obsługuje 3 metody oznaczania komentarzy – 2 z nich znane są z języków C/C++ a jedna z powłok (shell) systemów Uniksowych. Poniższe 2 metody służą do oznaczania, że tekst od danego miejsca do końca linii jest komentarzem:
Przykład 2.2. Stosowanie komentarzy
<?php echo "To jest test komentarzy"; // Ta metoda znana jest z języków C/C++ echo "A to drugi test"; # A ta z powłok Uniksowych ?>
Ostatnia metoda, także znana z języków C/C++, służy do oznaczania wielu linii jako komentarz. Należy przy niej pamiętać, aby nie zagnieżdżać wewnątrz siebie takich komentarzy ponieważ może to doprowadzić do nieprawidłowego funkcjonowania skryptów.
Przykład 2.3. Komentarze wielolinijkowe
<?php echo "Test komentarzy"; /* Tu jest początek komentarza tu dalej trwa a tu się kończy */ ?>
Zmienne
Jeśli ktoś nie spotkał się jeszcze z pojęciem zmiennej, to postaram się to wyjaśnić. Otóż zmienna jest to identyfikator znakowy, któremu przypisano jakąś wartość. W języku PHP zmienne oznacza się za pomocą znaku dolara (’$’) przed wspomnianym identyfikatorem. Obsługa zmiennych w PHP jest uproszczona do minimum. W „dużych” językach programowania zmienne trzeba najpierw inicjować (przy czym z góry trzeba określić typ zmiennej), zmienne tekstowe muszą mieć z góry ustalony rozmiar itp. W PHP nie jest to konieczne. Zmienna jest inicjalizowana (to znaczy rezerwowany jest dla niej pewien obszar w pamięci) przy pierwszym jej użyciu. Nazwy zmiennych muszą zaczynać się od litery (dużej lub małej) lub „underscore” (dolna kreska – '_’) a dalej mogą się składać z dowolnej ilości liter, cyfr i znaków o kodzie ASCII powyżej 127. Przy nazwach zmiennych respektowana jest wielkość znaków – zmienne $Test i $test to dwie różne zmienne. Oto przykład przypisywania wartości zmiennym i wykorzystanie ich w poleceniu echo:
Przykład 2.4. Koncepcja zmiennych
<?php $nazwa = 1; // Zmiennej "nazwa" przypisywana jest wartość liczbowa 1 $druga_nazwa = "Tekst"; // Zmiennej "druga_nazwa" przypisany jest ciąg znaków "Tekst" $trzecia_nazwa = $nazwa; // Zmiennej "trzecia_nazwa" przypisywana //jest wartość zmiennej "nazwa" echo "To jest $druga_nazwa"; // Powinien wyświetlić się napis "To jest Tekst" echo '$druga_nazwa'; // Powinien wyświetlić się napis "$druga_nazwa" echo $nazwa; // Powinna wyświetlić się cyfra 1 ?>
W powyższym przykładzie można zauważyć, że parametr dla polecenia echo można podawać zarówno w cudzysłowach jak i apostrofach. Jednak te parametry nie są sobie równoznaczne. W przypadku cudzysłowów zmienne zawarte między nimi są zamieniane na ich wartość, a w przypadku apostrofów zmienna pozostaje swoją nazwą (jak można zauważyć w powyższym przykładzie).
Typy zmienych
- liczby całkowite (integer)
- liczby rzeczywiste (double)
- ciągi (string)
- tablice (array)
- obiekty (object)
Dodatkowo PHP potrafi konwertować zmienne całkowite zapisane w różnych formatach liczbowych.
Przykład 2.5. Formaty liczbowe
<?php $a = 1234; # liczba dziesiętna $a = -123; # liczba ujemna $a = 0123; # liczba ósemkowa (równoznaczne z dziesiętnym 83) $a = 0x12; # liczba szesnastkowa (równoznaczne z dziesiętnym 18) ?>
Zmiana typu
Zazwyczaj nie jest konieczne określenie typu zmiennej – PHP sam to ustala, zależnie od kontekstu.
Przykład 2.6. Zmiana typu zmiennej
<?php $blah = "0"; // $blah jest ciągiem (ASCII 48) $blah++; // $blah jest ciągiem "1" (ASCII 49) $blah += 1; // $blah jest teraz wartością całkowitą (2) $blah = $foo + 1.3; // $blah jest wartością rzeczywistą (1.3) $blah = 5 + "10 Malutkich Świnek"; // $blah jest wartością całkowitą (15) $blah = 5 + "10 Małych Świń"; // $blah jest wartością całkowitą (15) ?>
Podczas przypisywania zmiennej nowej wartości, poprzednia wartość jest oczywiście zamazywana. W takim przypadku typ zmiennej ustalany jest od nowa.
Jeśli jednak zachodzi potrzeba zmiany typu lub PHP błędnie rozpoznaje typ, to można tego dokonać za pomocą rzutowania (cast – efekt jest jednorazowy) lub za pomocą funkcji settype (efekt trwały).
Rzutowanie typów odbywa się przez podanie nowego typu w nawiasie przed zmienną lub wartością, której typ chcemy zmienić.
Przykład 2.7. Rzutowanie typów
<?php $liczba_calkowita = 10; $liczba_rzeczywista = (real) $liczba_calkowita; ?>
Dozwolone typy rzutowań
- (int), (integer) – rzutuj do typu całkowitego
- (real), (double), (float) – rzutuj do typu rzeczywistego
- (string) – rzutuj do ciągu
- (array) – rzutuj do tablicy
- (object) – rzutuj do obiektu
Drugim sposobem, trwałym, jest użycie funkcji settype. Funkcja ta pobiera 2 argumenty. Pierwszym jest nazwa zmiennej do ustalenia typu, a drugim ciąg określający nowy typ zmiennej.
Dopuszczalne argumenty funkcji settype
- „integer”
- „double”
- „string”
- „array”
- „object”
Funkcja zwraca wartość „true” gdy wszystko poszło pomyślnie. W przeciwnym razie zwracana jest wartość „false”.
Przykład 2.8. Przykład użycia funkcji settype
<?php $zmienna = 10.3; echo "$zmienna <br>"; // Wyświetlona wartość to "10.3" settype($zmienna, "integer"); echo "$zmienna <br>"; // Wyświetlona wartość to "10" ?>
Predefiniowane zmienne
W każdym skrypcie PHP dostępne jest kilka zmiennych, których wartość jest ustalana na podstawie zmiennych środowiskowych serwera WWW. Dostępne są jak zwykłe zmienne – ze znakiem dolara przed nazwą.
Zmienne ustawiane przez serwer WWW
- GATEWAY_INTERFACE
- Informacja o specyfikacji CGI używanej przez serwer, np. 'CGI/1.1′.
- SERVER_NAME
- Nazwa hosta serwera na którym skrypt jest uruchamiany. Jeśli skrypt pracuje na wirtualnym hoście, to zmienna przyjmie jako wartość nazwę wirtualnego hosta.
- SERVER_SOFTWARE
- Ciąg identyfikujący serwera podawany przy odpowiadaniu na zapytania.
- SERVER_PROTOCOL
- Nazwa i numer wersji protokołu za pomocą którego wysłano zapytanie o stronę, np. 'HTTP/1.0′;
- REQUEST_METHOD
- Metoda zapytania użyta do uzyskania dostępu do strony, np. 'GET’, 'HEAD’, 'POST’, 'PUT’.
- QUERY_STRING
- Ciąg zapytania (jeśli takowy istnieje) za pomocą którego połączono się ze stroną.
- DOCUMENT_ROOT
- Katalog główny drzewa dokumentów spod którego skrypt jest wykonywany – jest to ustawienie z pliku konfiguracyjnego serwera.
- HTTP_ACCEPT
- Nagłówek z aktualnego zapytania, jeśli taki istnieje.
- HTTP_ACCEPT_CHARSET
- Zawartość nagłówka „Accept-Charset” z aktualnego zapytania, jeśli taki istnieje, np. 'iso-8859-1,*,utf-8′.
- HTTP_ENCODING
- Zawartość nagłówka „Accept-Encoding” z aktualnego zapytania, jeśli taki istnieje, np. 'gzip’.
- HTTP_ACCEPT_LANGUAGE
- Zawartość nagłówka „Accept-Language” z aktualnego zapytania, jeśli taki istnieje, np. 'en’.
- HTTP_CONNECTION
- Zawartość nagłówka „Connection” z aktualnego zapytania, jeśli taki istnieje, np. 'Keep-Alive’.
- HTTP_HOST
- Zawartość nagłówka „Host” z aktualnego zapytania, jeśli taki istnieje.
- HTTP_REFERER
- Adres strony (jeśli taka była), która wskazała przeglądarkę do tej strony. Wartość ta jest ustawiana przez przeglądarkę – nie wszystkie to robią.
- HTTP_USER_AGENT
- Zawartość nagłówka „User-Agent” z zapytania, jeśli taki istnieje. Jest to ciąg informujący o przeglądarce która została użyta do obejrzenia bieżącej strony, np. Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Można użyć funkcji get_browser() aby dopasować funkcjonalność strony do przeglądarki użytkownika.
- REMOTE_ADDR
- Adres IP z którego użytkownik połączył się z serwerem.
- REMOTE_PORT
- Port używany do komunikacji pomiędzy użytkownikiem a serwerem.
- SCRIPT_FILENAME
- Ścieżka do aktualnie wykonywanego skryptu.
- SERVER_ADMIN
- Wartość podana dla opcji SERVER_ADMIN w konfiguracji serwera WWW. Jeśli skrypt działa na wirtualnym serwerze, to będzie to wartość podana dla tego wirtualnego serwera.
- SERVER_PORT
- Port na serwerze którego użyto do połączenia. Dla normalnych połączeń będzie to ’80’.
- SERVER_SIGNATURE
- Ciąg zawierający wersję i nazwę wirtualnego hosta który jest dodawany do stron generowanych przez serwer.
- SCRIPT_NAME
- Zawiera ścieżkę do aktualnie wykonywanego pliku. Jest to przydatne do skyptów, które muszą wskazywać samego siebie.
- REQUEST_URI
- URI który został podany aby uzyskać dostęp do tej strony.
Zmienne ustawiane przez PHP
- argv
- Tablica argumentów przkazywanych do skryptu. Jeśli skrypt jest uruchamiany z linii poleceń, to zmienna ta daję dostęp do argumentów w stylu języka C. Jeśli jest wywołany przez metodę GET, to zmienna ta zawierać będzie ciąg parametrów (query string).
- argc
- Zawiera liczbę parametrów podanych podanych do skryptu w linii poleceń (jeśli skrypt został wywołany z linii poleceń).
- PHP_SELF
- Nazwa pliku aktualnie wykonywanego skryptu, względna do katalogu głównego dokumentów. Ta zmienna jest niedostępna jeśli PHP jest uruchamiany z linii poleceń.
- HTTP_COOKIE_VARS
- Tablica asocjacjna zmiennych przekazanych do skryptu przez HTTP cookies. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą <?php_track_vars?>.
- HTTP_GET_VARS
- Tablica asocjacjna zmiennych przekazanych do skryptu przez metodę GET. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą <?php_track_vars?>.
- HTTP_POST_VARS
- Tablica asocjacjna zmiennych przekazanych do skryptu przez metodę POST. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą <?php_track_vars?>.
Stałe
W PHP występują także tzw. stałe, czyli identyfikatory znakowe, których wartości nie można zmienić. Stałych, w odróżnieniu od zmiennych, używa się bez znaku dolara na początku. W PHP występuje kilka zmiennych ustawianych przez parser.
Stałe ustawiane przez PHP
- __FILE__
- Nazwa pliku ze skryptem który jest aktualnie przetwarzany. Jeśli stała ta użyta jest wewnątrz pliku który został zainkludowany (o poleceniu include w dalszej części kursu), to podana zostanie nazwa pliku zainkludowanego, a nie pliku nadrzędnego.
- __LINE__
- Numer linii w skrypcie która aktualnie jest przetwarzana. Jeśli stała ta użyta jest wewnątrz pliku który został zainkludowany, to podany zostanie numer linii przetwarzanej w pliku zainkludowanym.
- PHP_VERSION
- Ciąg reprezentujący wersję parsera PHP aktualnie używaną.
- PHP_OS
- Nazwa systemu operacyjnego na którym uruchamiany jest parser PHP.
- TRUE
- Logiczna wartość prawdy.
- FALSE
- Logiczna wartość fałszu.
Stałe mogą być definiowane przez użytkownika za pomocą funkcji define(), która przyjmuje 2 parametry: nazwę stałej i wartość do niej przypisaną.
Przykład 2.9. Definiowanie stałych
<?php define("STALA", "Hello world."); echo STALA; // Wyświetla "Hello world." ?>