PHP – refleksywny skryptowy język programowania zaprojektowany do generowania dynamicznych stron internetowych. PHP najczęściej interpretuje skrypty po stronie serwera WWW, ale może być również używany z poziomu wiersza poleceń oraz w aplikacjach pracujących w trybie graficznym za pomocą biblioteki GTK+. Implementacja PHP w środowisku Linux wraz z serwerem WWW Apache oraz serwerem baz danych MySQL określana jest jako platforma LAMP.


Możliwości

Skrypty napisane w PHP są z reguły umieszczane w dokumentach tekstowych (często razem z HTML lub XHTML). Dzięki temu PHP jest podobny w założeniach do dużo starszego mechanizmu Server Side Includes. PHP pozwala także na wykonywanie skryptów z linii poleceń podobnie jak Perl i Python. Jego modułowa budowa udostępnia również możliwość programowania aplikacji z interfejsem graficznym. PHP umożliwia współpracę z wieloma rodzajami źródeł danych, jak na przykład serwery relacyjnych baz danych, pliki tekstowe czy dokumenty XML.




Historia

Pierwsza wersja PHP, rozpowszechniana pod nazwą PHP/FI (Personal Home Page/Forms Interpreter), została stworzona przez duńskiego programistę Rasmusa Lerdorfa. W roku 1994 napisał on zestaw skryptów Perla służący do monitorowania internautów odwiedzających jego witrynę. Gdy ruch stał się zbyt duży, przepisał je w języku C, rozszerzając przy tym funkcjonalność samej aplikacji. Niedługo później użytkownicy zaczęli prosić go o możliwość użycia tych narzędzi na swoich stronach, zatem 8 czerwca 1995 roku autor udostępnił ich kod źródłowy pod nazwą PHP Tools 1.0. W 1997 roku pojawiło się PHP/FI 2.0. Jedyne oficjalne wydanie nastąpiło w listopadzie 1997 roku.

PHP 3

W 1997 roku projektem zainteresowali się dwaj izraelscy programiści, Zeev Suraski i Andi Gutmans. Zdecydowali oni, że przepiszą kod PHP od nowa, korzystając z pomocy istniejącej już wówczas społeczności PHP. W czerwcu 1998 roku ogłosili PHP 3.0 jako następcę PHP/FI, którego dalszy rozwój został wtedy zatrzymany.

PHP 3.0 posiadało całkowicie nową architekturę, która znacznie zwiększała jego wydajność. Pojawiły się w nim zalążki programowania obiektowego, ale najważniejszą cechą aplikacji była jej modułowość. Użytkownicy mogli teraz rozszerzać funkcjonalność języka poprzez dodawanie nowych modułów.

PHP 4

W zimie 1998 roku, krótko po wydaniu PHP 3, Zeev Suraski oraz Andi Gutmans jeszcze raz zabrali się za przepisywanie kodu źródłowego PHP. Za główne cele obrali poprawę modułowości języka oraz wydajności złożonych aplikacji. Dotychczasowa wersja nie była stworzona w tych celach i przegrywała z innymi rozwiązaniami[potrzebne źródło]. W połowie roku 1999 ukazał się Zend Engine, nowy silnik języka, wokół którego niedługo później zaczęto budować PHP 4. Oparta o niego wersja PHP ukazała się w maju 2000 roku.

Programiści mieli do dyspozycji teraz wiele nowych narzędzi, konstrukcji językowych oraz bezpieczniejszy system wejścia/wyjścia, od strony administracyjnej natomiast pojawiło się wsparcie dla wielu nowych serwerów WWW. W każdym kolejnym wydaniu z linii PHP 4 odczuwalne było zwiększenie bezpieczeństwa, szybkości działania oraz możliwości.

PHP 5

W 2002 roku Zeev Suraski oraz Andi Gutmans ponownie rozpoczęli znaczącą modernizację silnika PHP mającą na celu dodanie do tego języka modelu obiektowego na poziomie dorównującym innym językom. W lutym 2003 ukazała się wersja alpha PHP o numerze 5.0.0. Stabilna wersja ukazała się w lipcu 2004 roku.

Pojawił się w niej całkowicie nowy model programowania obiektowego, co spowodowało utratę pełnej kompatybilności z poprzednimi wersjami PHP. W ramach tego modelu zmieniony został sposób reprezentacji obiektów. W wersjach wcześniejszych obiekt był jednocześnie zmienną, co sprawiało duże trudności, dlatego też w wersji 5 na wzór Javy zmienna obiektowa stała się jedynie referencją do właściwego obiektu. Obecnie operacja przypisania powoduje powstanie drugiej referencji wskazującej na ten sam obiekt.

Oprócz tego udostępniono zbiór interfejsów znacznie rozszerzających możliwości klas użytkownika. Nastąpiły także zmiany oraz nowości w systemie modułów PHP. Funkcje obsługi języka XML zostały przepisane i wbudowane bezpośrednio w jądro aplikacji. Oprócz narzędzi obsługujących model DOM udostępniono SimpleXML – prosty interfejs do modyfikacji dokumentów XML. Wprowadzono SQLite, nowy, domyślnie wkompilowany silnik baz danych. 24 listopada 2005 roku ukazała się wersja 5.1, w której pojawił się ujednolicony sterownik oraz preprocesor zapytań do szeregu systemów baz danych.

PHP 6

W połowie roku 2005 zaczęły pojawiać się sygnały, że rozpoczęto wstępne prace nad PHP 6. W stanie na lipiec 2006 wersja ta znajduje się w fazie tworzenia, dostępne są jednak publiczne obrazy PHP w wersji źródłowej oraz binarnej dla systemów Windows.

Zmiany koncentrują się wokół dalszych usprawnień modelu obiektowego oraz deprecjacji wybranych rozwiązań. Wsparcie dla niektórych z nich zostanie wycofane całkowicie.



Moduły

Cała funkcjonalność PHP zawarta jest w czterech zbiorach modułów różniących się od siebie dostępnością dla programisty.

Moduły jądra
Część silnika PHP; zawsze aktywne.

Moduły oficjalne
Element każdej dystrybucji PHP; aktywowane ręcznie przez administratora serwera.

Repozytorium PECL
Darmowe moduły o otwartym źródle tworzone przez programistów z całego świata, przeznaczone do samodzielnej kompilacji. Począwszy od wydania PHP 5 do PECL przeniesionych zostało wiele wcześniejszych modułów oficjalnych, najczęściej tych niestabilnych lub rzadko używanych.

Repozytorium PEAR
Zbiór realizujących typowe zadania klas o ujednoliconej budowie.

Zdecydowana większość modułów ma budowę proceduralną. Dopiero w PHP 5 rozpoczęto tworzenie w pełni obiektowych rozszerzeń oraz obiektowych zamienników starych funkcji.




Składnia

Składnia PHP bazuje na składni języków C, Java oraz Perl.

Kod php:
<?php
$a 
5;
$b 3;
 
function 
suma($a$b)
{
        return 
$a $b;
}
 
echo 
suma($a$b); // 8
?>
Cały kod PHP musi zawierać się pomiędzy znacznikami: <?php oraz ?>, lub <? oraz ?>. W przeciwnym wypadku interpterer nie wykona kodu.




Komentarze

Rozróżniamy trzy typy komentarzy: Komentarz wieloliniowy:

Kod php:
<?php
/* To jest komentarz
   wieloliniowy, zamykany znacznikiem:
*/
?>

Komentarz jednoliniowy:

Kod php:
<?php
//to jest komentarz jednoliniowy, który nie potrzebuje zamknięcia
?>

Komentarz jednoliniowy (inna wersja):

Kod php:
<?php
#to jest komentarz jednoliniowy, który nie potrzebuje zamknięcia
?>