A differenza di molti altri linguaggi di programmazione, PHP non ha un pensiero unificante o un insieme di idee chiave: è iniziato come un insieme molto pragmatico di script perl e le funzionalità sono state aggiunte secondo necessità, senza molto di un processo formale di progettazione. Il risultato è un linguaggio abbastanza utile e completo, ma non molto coerente da solo. L'immensa popolarità della lingua peggiora le cose; non appena viene introdotta una nuova funzionalità, è praticamente scolpita nella pietra, perché tutti iniziano a usarla. Alcuni errori di progettazione sono stati quindi consolidati e il team di PHP ha davvero difficoltà a convincere le persone a rinunciare a loro - register_globals
e magic_quotes
sono solo due esempi di cose che all'epoca sembravano buone idee ma che si sono rivelate dilagante.
Un altro fattore è la cultura che è cresciuta intorno a PHP. Quando la sua popolarità cominciò a crescere, il tipico caso d'uso per PHP consisteva nell'aggiungere piccoli frammenti di funzionalità lato server in documenti HTML statici. Una gran parte del pubblico di riferimento erano hobbisti e non programmatori che utilizzavano PHP per aggiungere un po 'di roba dinamica ai loro siti web statici. La cultura risultante è molto pragmatica, senza molto interesse a stabilire un "modo corretto"; mentre è possibile scrivere in PHP abbastanza eleganti, una gran parte della comunità di utenti non si interessa molto a questo, finché funziona.
Al contrario, linguaggi come Python, Ruby, Lisp, C #, Haskell e altri hanno avuto una filosofia fin dall'inizio, e generalmente la comunità la abbraccia e spinge la lingua a essere all'altezza. (Nel caso in cui sei interessato, digita import this
in una sessione interattiva di python). Avere una filosofia significa che c'è una linea guida per l'uso e l'estensione della lingua, e porta anche a una comunità più omogenea - se non sei d'accordo con la filosofia, è più probabile che ti allontani e ne trovi una che si adatti meglio ; la comunità risultante ha maggiori probabilità di raggiungere un consenso su tutti i tipi di cose.
Detto questo, PHP ha punti di forza e punti deboli, oltre a oscuri casi limite; scrivere codice PHP idiomatico significa usare i punti di forza ed evitare le debolezze e le oscurità, proprio come con qualsiasi altra lingua.