PHP může být provozováno na různých platformách včetně Linuxu, mnoha variant Unixu (včetně HP-UXu, Solarisu či OpenBSD), Microsoft Windows, Mac OS X, RISC OS a dalších. Dorozumí se bez problémů s mnoha dnešními web-servery a pro většinu z nich lze PHP zkompilovat jako modul (se zbytkem spolupracuje na základě CGI). Bezproblémové je použití PHP se servery:
- Apache
- Microsoft Internet Information Server
- Personal Web Server
- Oreilly Website Pro Server
- Caudium
- Xitami
- OmniHTTPd
- Netscape a iPlanet servery
- …a dalšími
Výstupem z PHP je standardně soubor HTML, ale nejste omezeni jen na tento formát. Můžete psát skripty, jejichž výsledkem bude text ve formátu XHTML, XMLnebo dokonce PDF. PHP umí generovat i obrázky nebo dokonce animace Flash. Znamená to tedy, že pomocí PHP můžete například udělat skript, který na požádání vytvoří graf vytížení systému v podobě GIF souboru. (Abyste tomu rozumněli, vytvořené obrázky se nikam neukládají, jsou přímo výsledkem vykonání skriptu.)
V PHP je možno psát podle procedurálního paradigmatu nebo objektově. Velikou výhodou jazyka je množství vestavěných knihovních funkcí:
- matematické funkce pro práci s libovolně přesnými čísly
- práce s kompresí ZIP (jen ke čtení), Bzip2
- kalendářové funkce, funkce pro datum a čas
- podpora COM ve Windows
- funkce pro práci se soubory
- propojení PHP s Javou
- kryptovací a hashovací funkce
- síťové funkce
- funkce pro přístup na FTP
- HTTP funkce
- funkce pro IMAP, POP3, NNTPa odesílání elektronické pošty
- funkce pro práci s procesy, spouštění programů
- podpora semaforů, sdílené paměti a meziprocesorové komunikace
- funkce standardu POSIX
- regulární výrazy
- Shockwave Flash
- různé funkce pro práci s řetězci
- XML, XSLT, DOM XML
- …a mnoho dalších (tč. celkem kolem 111 oblastí)
A pokračujme ve výčtech. Velkým kladem PHP je, že zvládá spolupráci s mnoha databázemi. V současnosti přímo podporuje následující databázové systémy:
- Adabas D
- dBase
- Direct MS-SQL
- Empress
- FilePro (jen pro čtení)
- FrontBase
- Hyperwave
- IBM DB2
- Informix
- Ingres
- InterBase
- mSQL
- MySQL
- Oracle (OCI7 a OCI8)
- Ovrimos
- PostgreSQL
- Solid
- Sybase
- Unix dbm
- Velocis
Navíc je pro PHP vyvinuta schopnost práce s ODBC (Open DataBase Connection), takže se z PHP můžete připojit k jakékoliv další databázi podporující tento světový standard.
Napsání webových stránek pracujících s nějakým databázovým systémem je velice jednoduché. Pro ilustraci zde uvedu bohatě komentovaný příklad získání dat z MySQL:
<?php
// připojení k MySQL (v případě neúspěchu vypíše chybové
// hlášení a skončí)
$link = mysql_connect(‚localhost‘, ‚uzivatel‘, ‚heslo‘)
or die(‚Nemohu se připojit k MySQL!‘);
// výběr konkrétní báze dat
mysql_select_db(‚prace‘)
or die(‚Nepodařilo se vybrat bázi dat!‘);
// realizace SQL dotazu (získání všech dat z tabulky
// „pracovnici“, kteří se jmenují „Josef“)
$vysledek = mysql_query(
‚SELECT * FROM pracovnici WHERE jmeno=„Josef“‘);
// cyklus, ve kterém se v každém kroku zpracuje jeden řádek
// získaných dat
while ($radek = mysql_fetch_array($vysledek)) {
// tisk příjmení
echo $radek[‚prijmeni‘] . ‚<BR>‘;
}
?>
A jak se v něm programuje? Musím říct, že především rychle. PHP jakožto skriptovací jazyk tolik nebazíruje na typech, proměnné ani funkce nemusíte deklarovat, jednoduše je používáte. Když použiji proměnnou $promenna
, je jenom na mně, jestli do ní uložím číselnou hodnotu, řetězec, pole nebo objekt (a jestli tak k ní budu i přistupovat). Konverze mezi základními datovými typy (pokud to lze) je automatická, takže se při programování spíš soustředíte na samotný algoritmus než na to, jak jej v programovacím jazyku vyjádřit.
Jelikož se nikde nic nealokuje (lépe: PHP si vše alokuje samo), nemusíte si ani hlídat velikosti místa pro proměnné: do řetězce lze stejně jednoduše uložit jeden znak jako 3 kB textu a totéž platí pro pole: rozhodnete se uprostřed programu přidat do pole další položku? Není nic snazšího: jednoduše ji použijete v přiřazovacím příkazu a interpret PHP se sám postará o to, aby pro ni bylo v paměti místo.
Takových a podobných dalších vymožeností typických pro interpretované jazyky je v PHP spousta. Velice silným nástrojem (ač to na první pohled možná nevypadá) je možnost používat jako indexy pole kromě jakýchkoliv čísel i řetězce nebo dokonce hodnotu jakéhokoliv typu. Rázem tak dostáváte do rukou mocný nástroj hashovacích tabulek (nebo asociativních polí, chcete-li), který je dobrým pomocníkem na každém kroku.
<?php
// Proměnné se nedeklarují
$pocet = 3;
// Pokud použijete číselnou proměnnou v řetězcovém kontextu,
// PHP její hodnotu na řetězec automaticky převede
// Operátor tečky („.“) znamená spojení řetězců do jednoho.
$retezec = ‚Máme doma ' . $pocet . ' prasátka.‘;
// Vytvoření nového pole
$pole = array(‚bílá‘, ‚modrá‘, ‚zelená‘);
// Přidání další položky do pole
$pole[] = ‚černá‘;
// Přístup k položkám pole
$pole[0] = $pole[1];
// Indexem pole může být i řetězec
$pole[‚počet prasátek‘] = $pocet;
?>