Stejně jako ostatní programovací jazyky, i PHP obsahuje bohatou knihovnu funkcí, která by se dala s trochou zjednodušení rozdělit na dvě části – funkce „výpočetní“ a „výkonné“. Mezi ty první patří veškeré matematické, konverzní, řetězcové aj. funkce, bez kterých se prostě neobejdete a které s menšími obměnami (a bohužel často pod různými názvy) znáte z ostatních jazyků. Do druhé skupiny patří kromě už zmíněných databázových funkcí také mnoho dalších interface k různým knihovnám nebo prostředkům OS, prostě funkce, které používáte zejména kvůli jejich „vedlejším efektům“. Každá další verze PHP obvykle přinese mnoho nových takových funkcí. Osobně mám tyto výkonné funkce rozděleny ještě do dvou skupin – užitečné a postradatelné :) To je samozřejmě individuální, proto nám PHP umožňuje (nebo spíš vyžaduje) vybrat si během kompilace, které skupiny funkcí bude výsledný interpret umět. Aspoň se nemusíte obávat, že vám bude PHP s každou novou verzí víc a víc „bobtnat“ – jak je ostatně zvykem na námi nostalgicky vzpomínané platformě strýčka Billa :)
Funkce obvyklé a očekávané
Zde nabízí PHP běžný standard, doplněný o některé užitečné webové specialitky. Konečně podívejte se sami: řetězcové funkce, trocha matematiky, funkce pro práci s poli, proměnnými a časem a datumem. Možná budete mít tak jako já trochu problém zvyknout si na konkrétní názvy funkcí – nic vám však nebrání nadefinovat si třeba vlastní len
, pokud se vám strlen
nelíbí… A zmíněné speciality? Například AddSlashes (doplní do textu obrácená lomítka, aby se dal použít v SQL dotazu), htmlspecialchars (udělá v textu potřebná nahrazení znaků na html entity), nl2br (změní znaky nových řádků na html tag <BR>), similar_text (umí spočítat procentuální koeficient podobnosti 2 textů) nebo parse_str („parsne“ – jak se to řekne česky? – url query řetězec do proměnných).
Přístup k souborům a dalším zdrojům OS
PHP poskytuje podle mne naprosto dokonalý přístup k filesystému včetně unixových specifik jako jsou symbolické a „tvrdé“ odkazy nebo vlastník, skupina a mód souboru. To umožňuje napsat v PHP třeba webový souborový manažer, podobný těm, které se používají na různých free web-hostingových serverech. Funkce FOpen vám dokonce umožní transparentní přístup nejenom k lokálním souborům, ale také k internetovým zdrojům prostřednictvím protokolů ftp a http. Možnosti využití jsou široké – můžete psát vlastní html roboty a metavyhledavače, nebo si můžete pomocí PHP nechat v klidu stáhnout na svůj server nějaký špatně dostupný site. Zde najdete funkce pro práci se soubory a adresáři. Z PHP můžete i spouštět externí programy nebo pracovat se sdílenou pamětí a semafory standardu System V.
Dynamické obrázky
Tak toto je opravdová lahůdka – pokud máte nainstalovány knihovny GD a Free-type, můžete generovat pomocí PHP nejenom html stránky, ale i přímo obrázky typu GIF. Váš program může generovat různé grafy nebo třeba automaticky zmenšené náhledy – nebudete muset udržovat 2 podoby jednoho obrázku. K dispozici jsou funkce pro práci s barevnou paletou, můžete kreslit různé typy čar, obdélníky a elipsy, vyplňovat uzavřené oblasti nebo psát do obrázku pomocí unixových i true-type fontů. Podrobnosti najdete zde.
Pošta
PHP umí přímo odeslat poštovní zprávu pomocí funkce mail – opět se nabízí množství praktických aplikací. Píšete-li internetový obchod, můžete výslednou objednávku zákazníka odeslat přímo poštou. Nebo vám může skript poslat varovný e-mail, pokud něco není v pořádku (nejede SQL server apod.). Pokud potřebujete připojit ke zprávě nějaký soubor, existuje třída napsaná v PHP, která to umí (zkuste hledat v archivech PHP mailing listu nebo mi napište). Pomocí PHP napíšete i kompletní webové rozhraní k elektronické poště (myslím, že několik takových open-source řešení v PHP existuje). K tomu budete ještě potřebovat přístup k poštovní schránce – pro IMAP jsou v PHP přímo potřebné funkce a pro POP3 existuje opět PHP třída – tentokrát hledejte na FreshMeatu (kde mimochodem najdete mnoho užitečných skriptů pro PHP).
Některé další užitečné funkce
Pokud potřebujete transparentní přístup ke .gz archivům a máte instalovánu knihovnu zlib, máte k dispozici kompletní sadu funkcí. Napadá mne jedna praktická aplikace: málo požadované rozsáhlé stránky (archivy starých článků nebo mailing listů) umístit do .gz archivů, kde nezaberou tolik místa (mnoho z nás má omezený prostor pro hosting) a pomocí PHP je na přání dynamicky rozbalit a odeslat. Pokud plánujete vytvořit webové rozhraní k SNMP, opět máte štěstí – podívejte se sem. A ještě telegraficky: regulární výrazy, práce s PDF a XML dokumenty nebo Aspell (kontrola pravopisu).
To je pro dnešek vše, přeji příjemné programování a příště se podíváme na zajímavá místa na webu, týkající se PHP.