PHP

mini

**PHP** ili **P**ersonal **H**ome **P**age (ili *PHP: Hypertext Preprocessor*) je jedno od server-side open source rješenja. PHP je reflektivni programski jezik prvobitno dizajniran za pravljenje dinamičkih web stranica. PHP se uglavnom koristi za izvršavanje skripti na serverskoj strani (*server-side scripting*), ali se može koristiti sa komandnog linijskog interfejsa ili preko samostalne grafičke aplikacije.

*Server side scripting* predstavlja vid izvršavanja web skripti na webu, a samo mu ime kaže da se izvršava na serveru (suprotno od JavaScript-a koji se izvršava na klijentskoj strani - browseru). PHP je alternativa komercijalnim programskim jezicima (Microsoft ASP/VBScript/JScript, Macromedia ColdFusion, Sun Microsystems JSP/JAVA) i nekomercijalnom CGI-u/PERL-u.

## Historija 
PHP je napisan kao skup CGI binarnih fajlova u C programskom jeziku od strane danskog/grenlandskog programera Rasmusa Lerdorfa 1994. godine, kako bi zamijenio mali skup Perl skripti koje je koristio za održavanje lične stranice.

Lerdorf je inicijalno napravio PHP kako bi prikazao svoj rezime i kako bi prikupio određene podatke, poput onih o broju posjeta na svojoj stranici. *Personal Home Page Tools* se pojavio u javnosti 8. juna 1995. godine nakon što ga je Lerdorf kombinovao sa vlastitim *Form Interpreter*-om kako bi napravio *PHP/FI* (ovo izdanje se smatra drugom verzijom PHP-a).

Zeev Suraski i Andi Gutmans, dva izraelska razvijača sa Technion IIT-a, su nanovo napisali parser 1997. godine i stvorili bazu za PHP 3, promijenivši ime jezika u rekurzivni inicijalizam *PHP: Hypertext Preprocessor*. Razvojni tim je zvanično izdao PHP/FI 2 u novembru 1997. godine nakon mjeseci beta testiranja. Javno testiranje PHP 3 je otpočelo, a zvanično puštanje u upotrebu se desilo juna 1998. godine. Suraski i Gutmans su tada započeli novo prerađivanje PHP jezgre, proizvodeći Zend Engine 1999. godine. Također su osnovali Zend Technologies u Ramat Gani (Izrael) koja se bavi upravljanjem razvoja PHP-a.

Maja 2000. godine je izdat PHP 4 sa Zend Engine 1.0. Najskoriji update isporučen od The PHP Group je za stariju seriju PHP 4 koja je do maja 2007. uključivala verzije do 4.4.7. PHP 4 će imati osigurano snabdijevanje sigurnosnim updateima do 31. decembra 2007.

13. jula 2004, izdat je PHP 5 sa novom Zend Engine II. PHP 5 je uključio nove karakteristike poput:

* Unapređena podrška za objektno-orjentisano programiranje
* PHP Data Objects nastavak, koji definiše *lightweight* konzistentni interfejs za pristup bazama podataka
* Poboljšane performanse
* Bolja podrška za MySQL
* Ugrađena podrška za SQLite
* Integrisana SOAP podrška
* Podatkovni iteratori
* Rad s greškama preko izuzetaka

Posljednja stabilna verzija PHP-a je 5.2.3. koja je izdata 1. juna 2007. godine.

## Upotreba 
PHP se općenito izvršava na web serveru, uzimajući PHP kod kao ulaz, kreirajući web stranice kao izlaz; međutim može se također koristiti za pravljenje skripti sa komandne linije i aplikacije za korisnički interfejs na klijentskoj strani. PHP se može koristiti na većini web servera i na gotovo svakom operativnom sistemu i platformi bez ikakve novčane nadoknade. PHP Group također obezbjeđuje kompletan izvorni kod za korisnike koji grade, podešavaju ili nadograđuju kod za vlastitu upotrebu.

### Izvršavanje skripti na serverskoj strani 
Originalno dizajniran za kreiranje dinamičkih web stranica, PHP se načelno fokusira na *server-side scripting* odnosno izvršavanje skripti na serverskoj strani. Izvršavanjem PHP parsera sa web serverom i web browserom, PHP model se može uporediti sa drugim server-side scripting jezicima kao što su Microsoftov ASP.NET sistem, JavaServer Pages (Sun Microsystems) i Ruby on Rails framework, pošto svi oni obezbjeđuju dinamički sadržaj klijentu sa web servera.

Kako bi se direktnije takmičio sa *framework* pristupom, Zend radi na Zend Frameworku - skupu PHP gradivnih blokova i najboljih praksi u nastajanju (počevši od juna 2006); drugi PHP frameworkci sa istim osnovama uključuju CakePHP, PRADO i Symfony.

LAMP arhitektura je postala popularna u web industriji kao način za plasiranje jeftinih, pouzdanih, skalabilnih i sigurnih web aplikacija. PHP se obično koristi kao *P* dio u ovoj kompoziciji zajedno sa Linuxom, Apache serverom i MySQL-om, iako se *P* može odnositi i na Python programski jezik ili Perl.

PHP se može koristiti sa velikim brojem relacionih sistema za upravljanje bazama podataka (RDBMS), izvršava se na svim najpopularnijim web serverima i dostupan je za mnoge različite operativne sisteme. Prilagodljivost znači da PHP ima široku instalacionu osnovu na Internetu; preko 19 miliona internetskih domena su udomljene na serverima sa instaliranim PHP-om.

Primjeri, popularnih server-side PHP aplikacija uključuju: phpBB, WordPress i MediaWiki.

### Izvršavanje skripti na komandnoj liniji 
PHP također obezbjeđuje komandni linijski interfejs SAPI za razvoj shell i desktop aplikacija, demona, log parsiranja i drugih sistemskih administrativnih zadataka. PHP se sve više koristi na komandnoj liniji za zadatke koji su tradicionalno pripadali Perlu, Pythonu, awk-u ili shell scriptingu.

### Aplikacije grafičkog interfejsa na klijentskoj strani 
PHP obezbjeđuje povezivanje sa GUI bibliotekama poput GTK+ (sa PHP-GTK), Qt (sa PHP-Qt) i bibliotekama za tekstualni način rada poput ncurses radi olakšanja razvoja šireg opsega aplikacija grafičkog interfejsa za cross platforme.

## Sintaksa 
PHP se primarno ponaša kao softverski filter. PHP program uzima informacije iz datoteke ili toka (stream) koji sadrže tekst i specijalne PHP instrukcije i izbacuje drugi tok podataka za prikazivanje. Od PHP 4, parser kompajlira ulaz za proizvodnju bytecode-a kojeg obrađuje Zend Engine, dajući poboljšanu performansu od interpreterskog prethodnika. Zend Engine II je u srcu PHP 5.

Školski primjer programa Hello World za PHP izgleda na sljedeći način:

```php

```

PHP samo parsira kod unutar svojih delimitera, kao što su ****. Sve izvan toga se direktno šalje na izlaz i ne parsira se od strane PHP-a. Gornji primjer je ekvivalentan sljedećem tekstu na izlazu:

 Hello, World!

Primarno korištenje ovoga je radi omogućavanja PHP iskazima da budu uklopljeni u HTML dokumente, naprimjer:

```php

Regularni HTML ovdje

```

Ispred varijabli se dodaje simbol dolara ($), a primitivni tip se ne treba specificirati unaprijed. Za razliku od imena funkcija i klasa, imena varijabli su osjetljiva na veliko i malo slovo (eng.: *case sensitive*).

Pomoću dvostrukih navodnika (`""`), kao i heredoc stringova je moguće uklopiti vrijednost varijable u string.

PHP nove linije koda tretira kao *whitespace*. Iskazi se završavaju tačkom-zarezom (;) osim u nekoliko specijalnih slučajeva.

PHP ima tri tipa sintakse za komentare: /* */ za blok komentare, i // kao i # za inline komentare.

Primjer jednostavne funkcije u PHP-u:

```php

```

Rezultat:

```
Ovo je Wikipedia - Slobodna Enciklopedija
```

### Tipovi podataka 
PHP pohranjuje cijele brojeve u rangu koji zavisi od platforme. Ovaj rang je tipično za 32-bitne predznačene cijele brojeve (eng. *integer*).

Integer varijablama se mogu dodijeliti vrijednosti pomoću decimalne (pozitivne i negatine), oktalne i heksadecimalne notacije. Realni brojevi se pohranjuju u rang specifičan za platformu. Mogu biti specificirani korištenjem floating point notacije ili pomoću dvije forme naučne notacije.

PHP ima urođeni boolean tip, koji je tako i imenovan, slično boolean tipovima u Javi i C++. Korištenjem pravila za konverziju boolean tipova, vrijednosti različite od nule se mogu interpretirati kao true, a nula kao false, kao u Perlu.

Null tip podataka predstavlja varijablu koja nema vijednost. Jedina vrijednost u null tipu podataka je *NULL*.

Varijable "resursnog" tipa predstavljaju reference na resurse iz vanjskih izvora. Tipično ih kreiraju funkcije iz specifične ekstenzije, a mogu biti obrađivane samo od strane funkcija iz iste ekstenzije. Primjeri uključuju datoteku, sliku i resurse baze podataka.

Nizovi podržavaju i numeričke i string indekse, i heterogeni su. Nizovi mogu sadržavati elemente bilo kojeg PHP tipa, uključujući resurse, objekte, čak i druge nizove. Poredak se čuva u listama vrijednosti i u hash tabelama sa ključevima i vrijednostima, koji se mogu miješati.

### Objekti 
Osnovne funkcionalnosti objektno orijentisanog programiranja su dodate u PHP3. Upravljanje objektima je upotpunosti prerađeno za PHP 5, što se odrazilo na bolju performansu i više karakteristika. U prethodnim verzijama PHP-a, upravljanje objektima se obavljalo na isti načina kao i sa primitivnim tipovima. Mana ove metode je bila u tome što bi se cijeli objekt prekopirao kada bi se varijabla napunila ili bi se proslijedio metodi kao parametar.

## Važni datumi izdavanja 
## Dalji razvoj 
PHP 6, u razvoju od jula 2007., ima za cilj neke od PHP 5 nedostataka.

* Namespace support will be added
* podrška za izvorni Unicode će biti dodata
* opcija **magic_quotes** će biti uklonjena
* **HTTP_*_VARS** globalne varijable će biti uklonjene
* opcija **register_globals** će biti uklonjena
* opcija **safe_mode** će biti uklonjena

## Reference 
## Preporučena literatura 
* 
* 
* 
* 
* 
* 
* 
## Također pogledajte 
* Drupal

## Vanjski linkovi 
* Programiranje.Org - Zajednica programera
* PHP  
* PHP 
* PHP 
* Niz tutorijala namijenjenih uglavnom početnicima 
* Obimni vodiči uglavnom namijenjeni početnicima 
* Par stvari o PHP-u 
* Instalacija i konfiguracija IIS-a za rad sa PHP-om 
* Zvanična PHP stranica
* Do You PHP? Rasmus Lerdorf
* PHP tutorijali na hrvatskom jeziku

Kategorija:Programski jezici