PHP

**PHP** (PHP: Hypertext Preprocessor) on skriptimiskeel, mida kasutatakse peamiselt serveripoolsetes lahendustes dünaamiliste veebilehtede loomisel. PHP toetab objektorienteeritud programmeerimist, andmebaasidega suhtlemist ning moodulite kaudu veel paljusid protokolle ja rakendusi.

Avatud lähtekood ja võimalus lihtsalt siduda PHP koodi HTML-iga on teinud PHP-st väga populaarse vahendi dünaamiliste veebilehtede loomisel. Levinud on kooslus mida hüütakse rakenduste esitähtede järgi LAMP (Linux, Apache, MySQL, PHP).

## Ajalugu

PHP sai alguse 1994. aastal Rasmus Lerdorfi loodud CGI teekidest. Lühend PHP tähendas algselt *Personal Home Page* (isiklik koduleht). Lerdorf avalikustas PHP koodi 8. juunil 1995. Too avalikustatud kood kandis versiooninumbrit 2 ning sisaldas juba suurt osa PHP praegustest funktsioonidest.
* 1997 valmis PHP 3, mis sisaldas uut parserit. Ühtlasi muutus keele nimi rekursiivseks lühendiks sõnadest *PHP: Hypertext Preprocessor* (PHP: hüperteksti preprotsessor).
* 2000 ilmus PHP 4 koos uue mootoriga Zend Engine 1.0.
* 2004 lasti välja PHP 5, mis sisaldas täiendatud objektorienteeritud programmeerimise tuge ning mootorit Zend Engine 2.0.
* 2015 detsembris lasti välja PHP 7 koos uue mootoriga Zend Engine 3.0, mis väidetavalt muudab PHP rakendused kuni 2x kiiremaks ja tarbib 50% ulatuses paremini mälu.

## Süntaks
PHP süntaks on põhiliselt laenatud keeltest C, Java ja Perl.

PHP koodina parsitakse vaid spetsiaalselt märgendatud osad failist. Kõik väljaspool neid märgendeid saadetakse lihtsalt programmi väljundisse. 

* Vaikimisi kasutatakse PHP sektsiooni algusmärgendina `<?php` ja lõpumärgendina `?>`. Võimalik on kasutada ka märgendeid `<?` ja `?>`, `<%` ja `%>`, ning `<script language="PHP">` ja `</script>`.

* Muutujanimed algavad dollarimärgiga (näiteks `$muutuja`) ning on tõusutundlikud. Klasside ja funktsioonide nimed on seevastu ilma `$`-prefiksita ning tõusutundetud. Dollarimärk muutuja ees võimaldab kergesti muutuja väärtuse sõne sisse asendada (näiteks `"Tere $nimi"`).

* Kommentaaride esitamiseks on kolm süntaksit: plokikommentaarid algavad `/*` ja lõpevad `*/` märgendiga, reakommentaarid algavad kas trellide `#` või kahe kaldkriipsuga `//`.

* Iga käsk (enamasti rida) peab lõppema semikooloniga.

### Hello world
Hello worldi programm PHP-s:


```php
<?php
    // Kuvab ekraanil teksti Hello, world!
  echo "Hello, world!";
?>
```


### PHP kasutamine serverites
Kuigi PHP skriptid töötavad paljudes serverites, ei tööta need kõigis serverites. Tegemaks kindlaks, kas kasutamisel olevas serveris saab PHP-d rakendada, tuleb luua tavaline tekstifail (näiteks programmiga Notepad++ või Notepad) ja salvestada see laiendiga *.php* (vajadusel võib proovida ka erinevaid faililaiendeid, näiteks laiendit *.php3*). Faili sisu peab olema analoogne järgnevalt esitatule:

```php
<?php
echo '<p>PHP on nüüd installitud</p>';
phpinfo();
?>
```


Seejärel tuleb loodud php-fail (näiteks *info.php*) laadida oma serverisse ja avada veebibrauseris. Kui PHP-d saab kasutada soovitud serveris, siis tuleb ette tabel PHP konfiguratsiooni kohta. Muul juhul kuvatakse näiteks valge leht või seesama koodiriba.

### Funktsioonid
PHP-l on sisse ehitatud sadu funktsioone ja koos laienditega kokku tuhandeid. Funktsioonid on hästi dokumenteeritud PHP kodulehel. Funktsioonidele saab viidata ainult nende nime järgi, otseselt või dünaamiliselt – muutuja sisaldab funktsiooni nime. Funktsioone saab ise teha ilma, et neid peaks prototüüpima.Funktsiooni tegemine käib järgmiselt:

```php
/*
    Funktsiooni struktuur: iga funktsioon algab sõnaga function, millele järgneb funktsiooni nimi, 
    millele omakorda järgneb sulud ja lõpuks bracket { ja bracketi lõpp }, mis suleb funktsiooni.
*/

// Funktsioon nimega nimi, mis tagastab väärtuseks 'Pille Riin';
function nimi() {
    return 'Pille Riin';
}

echo 'Minu nimi on ' . nimi() . '.';
```


## Vaata ka
* ASP
* JSP
* CGI
* Perl
* Apache
* MySQL
* HTML
* Smarty

## Viited

## Välislingid

* PHP Eesti koduleht
* PHP Center koduleht (eesti keeles)
* phpPgAdmin is a web-based administration tool for PostgreSQL – **[[:en:phpPgAdmin|phpPgAdmin]]**
* phpMyAdmin
* PHP wiki (eesti keeles)
* PHP õpetused (eesti keeles)
* PHP 7 Guide