Nonostante PHP 4 sia "quasi" perfetto per lo sviluppo di semplici applicazioni web: trattamento di form, connessioni a database etc..., ci sono alcune limitazioni che si incontrano soprattutto nell'utilizzo di PHP in applicazioni complesse, in particolare la versione di OOP (object-oriented programming) è carente di molte funzionalità proprie dei linguaggi di questo tipo (uno per tutti: Java), l'estensione per MySQL non supporta il nuovo protocollo client di MySQL 4.1 e il supporto a XML è quantomeno non adeguato.
PHP 5 è andato a migliorare la versione precedente proprio in questi punti "deboli" dato che sono state completamente riscritti i componenti relativi a:
- Programmazione ad Oggetti
- MySQL: grazie alla nuova MySQLi (MySQL Improved extensions) viene offerta la possibilità di utilizzare una connessione SSL verso il server, di gestire query già preparate con parametri collegati ottimizzandone quindi l'esecuzione. Infine viene offerta una nuova interfaccia OO a MySQL.
- XML: il fine di queste nuove implementazioni è quello di garantire una interoperabilità tra le varie estensioni piuttosto che utilizzare diversi agent per ognuna di esse. Il supporto a DOM (Document Object Model) consente di considerare questa specifica come un API (application Programming Interface) indipendente dal linguaggio di programmazione. Viene fornita inoltre una nuova estensione XSLT (Extensibile Stylesheet Language Transformation) che permette di convertire dati XML e oggetti DOM in documenti tramite l'utilizzo di stylesheets. Oltre a ciò è stata introdotta la possibilità di estrarre in modo molto semplice le informazioni da documenti XML di cui si conoscano le specifiche tramite la nuova estensione SimpleXML
Le altre novità maggiori sono sicuramente:
- la gestione di un database totalmente embedded: SQLite. Nonostante il nome faccia pensare ad un database con funzionalità ridotte, SQLite, oltre a permettere di gestire dati senza ulteriori installazioni, offre supporto a transazioni, subquery, trigger e altre funzionalità avanzate.
- gli iteratori. Raggruppati nella SPL (Standard PHP Library) permettono di ciclare tramite istruzioni foreach su diversi tipi di dato come elenchi di file, risultati di query e anche documenti XML
- la gestione degli errori tramite eccezioni (exception handling). Questo permette, come già avviene in altri linguaggi come Java o C++, di separare completamente la gestione degli errori dalla logica del programma
- la gestione di stream, filtri e wrapper come interfaccia di lettura e scrittura su file.
- il supporto a SOAP sia per la creazione di web service che come client per web services già esistenti
- e infine Tidy: un'estensione che permette di validare il codice HTML o XHTML generato come output.