Spesso si ha bisogno di avere classi con variabili e funzioni simili ad altre classi.
Non è possibile che una sottoclasse, ridefinisca variabili e funzioni di una classe madre.
Una classe estesa dipende sempre da una singola classe di base: l'eredità multipla non è supportata. Le classi si estendono usando la parola chiave 'extends'.
class Named_Cart extends Cart { var $owner;
function set_owner ($name) { $this->owner = $name; } }
Qui viene definita una classe Named_Cart che ha tutte le funzioni e variabili di Cart più la variabile $owner e la funzione set_owner().
Viene creato un carrello con nome con il metodo usato in precedenza, in più la classe estesa permette di settare o leggere il nome del carrello. Si possono usare variabili e funzioni sia di Cart che della sua estensione:
$ncart = new Named_Cart;Crea un carrello con nome
$ncart->set_owner("kris"); Assegna il nome al carrello
print $ncart->owner; stampa il nome del proprietario
$ncart->add_item("10", 1); (funzionalità ereditata da Cart)