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