questa è abbastanza completa ...
ha un'interfaccia, una classe astratta che implementa l'interfaccia ed una serie di sottoclassi che estendono la classe principale ... a cosa serve tutto quel codice ?
a scrivere
$users = &new UserCounter([parametri...]);
ed avere a seconda dei parametri la sottoclasse dedicata per quel tipo di database (un contatore "astratto", riallacciandomi all'altra discussione, usi sempre la classe UserCounter ma a seconda di come la inizializzi avrai il driver dedicato per gestire il contatore)
http://www.devpro.it/code/63.html
questo altro esempio invece sfrutta una classe astratta per i tipi di dato che a sua volta contiene una classe TypeHints per gestioni generiche di chiamate.
La classe astratta viene estesa da ogni tipo di dato così che ognuno avrà a disposizione gli stessi metodi ma volendo puoi inventarti altri tipi di dato, oltre le primitive.
Il dato, sarà una versione della astratta contenente la principale ... questa è un pò più contorta ma forse utile come esempio:
http://www.devpro.it/code/42.html
se vuoi altri esempi (anche non miei) specifica meglio cosa non ti è chiaro o cosa stai cercando![]()