Co se mi líbí a nelíbí na PHP
V posledních letech docela dost programuju v PHP. Na základě svých zkušeností jsem dal dohromady pár subjektivních postřehů o tomto jazyku:
Co se mi líbí
- Céčkovitost. Stejná syntaxe, spousta shodných funkcí => snadno se naučí.
- Jednoduchost. Co přijde z formuláře/cookie/parametrů v URL, to najdu v příslušné proměnné. PHP se dá "vlepit" kamkoliv do kódu stránky. Výstup přes
<?=něco?>
. - Beztypovost. Když jsem se PHP učil, strašně mi vadily nečistoty typu "řetězec s číslem na začátku se v číselném výrazu převede na toto číslo". Čím víc s PHP dělám, tím víc oceňuju to, že se o typy nemusím starat (z databáze třeba vytáhnu řetězce představující množství čehosi a klidně je můžu hned sčítat, obdobně to platí pro GET parametry).
- Perlovitost. Snadno se pracuje s regulárními výrazy, dosazováním proměnných do řetězců, syntaxe
příkaz or ošetření_chyby
je takřka geniální. - Asociativní pole jako základní datový typ. Od doby, co trochu víc programuju v PHP, mi v každém jiném jazyku šíleně chybí.
- Velké množství knihovních funkcí. K tomu není co dodat.
Co se mi nelíbí
- Céčkovitost. Některé chyby céčka (třeba neexistence vyjímek) se přenáší do PHP.
- Živelný vývoj. Funkce se přidávají ad-hoc, vznikají nekonzistence, velké množství drobných chyb. Ustupuje se od dobrých vlastností (dění okolo
register_globals
a spol.) - Chabá podpora velkých aplikací. Ve velkém projektu se kvůli jednomu malému skriptu musí často zpracovat spousty kilobajtů kódu s potřebnými objekty apod. Možná by pomohl nějaký bytecode. PHP 5 by mělo přinést částečné řešení.
- Chabá podpora objektů. Konkrétně chybí destruktory (vzhledem k existenci garbage collectoru by stačila napodobenina ve stylu Javy – tedy metoda volaná při úklidu objektu) a hlavně privátní pole. O předávání objektů jako parametrů funkce hodnotou raději pomlčím. (Vše bude v PHP5.)
- Podtržítková mánie. Identifikátory s podtržítky na začátku jména byly v programování odjakživa interní nebo se nějakým jiným způsobem nacházely v "šedé zóně". A najednou tu máme
$_GET
,$_POST
,__sleep
,__wakeup
– všechno věci, se kterými programátor běžně potřebuje pracovat. A v PHP5 tento trend bohužel pokračuje... - Nesnáším příkaz
global
! Je nepohodlný a navíc se kvůli němu pak vymýšlejí opičárny jako superglobální pole.