
(Przekierowano z Php)
Skocz do: ,
|
PHP Hypertext Preprocessor[1] |
|
|
Rodzaj |
interpreter
języka programowania |
|
Aktualna
wersja stabilna |
|
|
Producent |
PHP
Group |
|
PHP
License [2] |
|
|
wieloplatformowy
[3] |
|
PHP[1]
– obiektowy, skryptowy
język programowania zaprojektowany do
generowania dynamicznych stron internetowych. PHP najczęściej stosuje się
do przetwarzania skryptów po stronie serwera WWW, ale może być on również używany
z poziomu wiersza poleceń oraz w aplikacjach pracujących w trybie
graficznym np. przy pomocy biblioteki GTK+. Implementacja
PHP w środowisku Linux
wraz z serwerem
WWW Apache oraz serwerem baz danych MySQL określana jest
jako platforma LAMP.
Spis treści
[ukryj] |
Skrypty napisane w PHP są z reguły umieszczane w plikach tekstowych (czasami
razem z HTML lub XHTML). Dzięki temu
PHP jest podobny w założeniach do coraz rzadziej stosowanego mechanizmu Server Side Includes[4]. PHP pozwala także na wykonywanie skryptów z
linii poleceń podobnie jak Perl, Python oraz Ruby. Jego modułowa budowa daje również
możliwość programowania samodzielnych aplikacji z interfejsem graficznym. PHP umożliwia
współpracę z wieloma rodzajami źródeł danych, takich jak systemy zarządzania bazami danych,
pliki tekstowe, dokumenty XML
oraz serwisy
WWW.
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żących do
monitorowania internautów, którzy odwiedzali jego witrynę. Gdy ruch na stronach
stał się 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[5].
W 1997 roku projektem zainteresowali się dwaj izraelscy programiści, Zeev
Suraski i Andi Gutmans[6]. 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 zaprzestano rozwijać.
PHP 3.0 posiadało całkowicie nową architekturę, która znacznie zwiększała
jego wydajność[potrzebne źródło].
Pojawiły się w nim zalążki programowania obiektowego, ale najważniejszą cechą
aplikacji była jej modułowość. Programiści mogli w tej wersji rozszerzać
funkcjonalność języka poprzez dodawanie własnych modułów.
Zimą 1998 roku, krótko po wydaniu PHP 3, Zeev Suraski oraz Andi Gutmans
ponownie zaczęli przepisywać kod źródłowy PHP. Za główne cele obrano poprawę
modułowości języka oraz zwiększenie wydajności działania złożonych aplikacji.
Dotychczasowa wersja nie była stworzona do tych celów, i tym samym nie była
konkurencyjna w stosunku do innych rozwiązań[potrzebne źródło]. W
połowie 1999 roku został stworzony nowy silnik języka - Zend Engine,
na bazie którego rozpoczęto pracę nad PHP 4[7]. Ostatecznie PHP 4 zostało wydane w maju 2000
roku.
Od tego czasu programiści mieli do dyspozycji wiele nowych narzędzi,
konstrukcji językowych oraz bezpieczniejszy system wejścia/wyjścia, natomiast
od strony administracyjnej dodano obsługę wielu nowych serwerów WWW. W każdym
kolejnym wydaniu z linii PHP 4 zwiększano bezpieczeństwo, szybkość działania
oraz dodawano nowe funkcje[potrzebne źródło].
W 2002 roku Zeev Suraski oraz Andi Gutmans ponownie rozpoczęli znaczącą
modernizację silnika Zend, mającą na celu dodanie do PHP modelu obiektowego,
podobnego do tych, który istnieje w innych językach obiektowych. W lutym 2003
ukazała się wersja alpha PHP oznaczona numerem 5.0.0. Stabilna wersja została
wydana 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[8].
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[9]. 24 listopada 2005 roku ukazała się wersja 5.1, w
której pojawił się PDO
- ujednolicony sterownik oraz preprocesor zapytań umożliwiający komunikację z
różnymi systemami baz danych.
W połowie roku 2005 zaczęły pojawiać się sygnały, że rozpoczęto wstępne
prace nad PHP 6. Obecnie ta wersja znajduje się w fazie projektowania, dostępne
są jednak publiczne obrazy PHP w wersji źródłowej, jak również w wersji
binarnej dla systemów Windows.
Zmiany koncentrują się wokół dalszych usprawnień modelu obiektowego oraz
wycofania obsługi wybranych, przestarzałych rozwiązań.[10][11].
Zobacz
więcej w osobnym artykule: Moduły
PHP.
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.
Zobacz publikację na Wikibooks:
Składnia
języka PHP
Składnia PHP bazuje na składni języków C, Java oraz Perl.
<?php
$a = 5;
$b = 3;
function suma($zmienna1, $zmienna2)
{
return $zmienna1 + $zmienna2; //Dodajemy argumenty i je zwracamy
}
echo suma($a, $b); // 8
?>
Cały kod PHP musi zawierać się pomiędzy znacznikami: <?php oraz ?>, lub <?
oraz ?>. W przeciwnym wypadku
interpreter nie wykona kodu.
Klasy deklarujemy następująco:
<?php
class MojaKlasa
{
function zrob_cos()
{
echo 'Właśnie wykonywana jest funkcja zrob_cos()<br>';
}
}
$mojobiekt = new MojaKlasa();
$mojobiekt -> zrob_cos(); // Wydrukuje komunikat
?>
Rozróżniamy trzy typy komentarzy: Komentarz wieloliniowy:
<?php
/* To jest komentarz wieloliniowy, zamykany znacznikiem:*/
?>
Komentarz jednoliniowy:
<?php
//to jest komentarz jednoliniowy, który nie potrzebuje zamknięcia
?>
Komentarz jednoliniowy (inna wersja):
<?php
#to jest komentarz jednoliniowy, który nie potrzebuje zamknięcia
?>
Zmienne w PHP nie wymagają deklaracji i nie posiadają jawnych typów. Jeżeli
kontekst (na przykład definicja argumentu funkcji lub operator) danego
wyrażenia wymaga zmiany jego typu, zostaje ono rzutowane do typu
wymaganego. Wśród obsługiwanych rodzajów danych znajdują się:
|
Typ |
Opis |
|
|
Łańcuch tekstowy |
Objęty znakami cudzysłowu lub składnią here document ulega interpolacji |
|
|
Liczba całkowita |
Obsługiwane są stałe całkowite w notacji dziesiętnej,
szesnastkowej oraz ósemkowej |
|
|
Liczba zmiennoprzecinkowa |
|
|
|
Typ logiczny |
Do fałszu konwertowanych jest wiele postaci zmiennych
innych typów |
|
|
Tablica |
Przechowuje dowolną liczbę elementów dowolnego typu.
Indeksowana ciągami znaków lub liczbami całkowitymi |
|
|
Obiekt |
|
|
|
Zmienna niezdefiniowana |
|
|
|
resource |
Zasób spoza PHP |
przykładowo deskryptor pliku lub połączenie z bazą danych |
Domyślnie PHP zawsze (pomijając obiekty od wersji 5) przekazuje zmienne
przez wartość. Przekazywanie przez referencję zachodzi w wybranych funkcjach
wbudowanych, oprócz tego można je narzucić w deklaracji własnej funkcji:
<?php function foo(&$value) { $value = 'bar'; } ?>
Elementy programowania obiektowego pojawiły się w
PHP 3. PHP 4 udostępniono statyczne wywoływanie metod. W PHP 5 możliwości
zostały rozszerzone między innymi o statyczne zmienne klasy, obsługę
interfejsów, kontrolę dostępu,
kontrolę typów czy klasy i metody abstrakcyjne. Model PHP wzoruje
się na językach C++
i Java. Od wersji 5
PHP posiada mechanizmy refleksyjne [12], które pozwalają na analizę klas, funkcji oraz
rozszerzeń. Bez zainstalowania odpowiedniego rozszerzenia nie umożliwiają one
jednak zmiany tych struktur w czasie wykonywania.
PHP jest wyposażone w szeroki wachlarz domyślnych funkcji. Niekonsekwencja w
ich nazewnictwie (np. naprzemienne stosowanie CamelCase i
znaku podkreślenia) jest niekiedy przedmiotem krytyki PHP. Znaczna część
funkcji pochodzi jednak od ich odpowiedników w języku C i różnice pomiędzy
nazwami funkcji wywodzą się właśnie z różnic w nazewnictwie z odpowiednich
bibliotek C.
PHP obsługuje rekurencję do poziomu około stu zagłębień. Jeśli stos parsera zostanie przeciążony nadmierną
ilością wywołań lub iteracji, wywołanie aplikacji zostanie przerwane.
Wersja 5 wprowadziła mechanizm wyjątków. Tylko część modułów powiadamia jednak
użytkownika o wystąpieniu błędów za ich pośrednictwem; większość umieszcza je
na wyjściu programu w miejscu ich wystąpienia.
W roku 1997 język PHP/FI obsługiwało ok. 50 tysięcy domen internetowych. W 2004 roku udział języka
PHP wynosił ok. 15 milionów domen. Rok później wzrost popularności uległ jednak
zahamowaniu[5][13].
W PHP powstała znaczna część obecnie istniejących aplikacji sieciowych.
Należą do nich systemy zarządzania treścią, systemy forów dyskusyjnych,
aplikacje pocztowe oraz klienty baz danych.
Zobacz publikację na Wikibooks:
PHP
Paradygmaty programowania:
Platforma LAMP: