Originariamente inviato da Tobler
Scusate se tiro su di nuovo questo 3d ma mi è sorto un dubbio.

Fingiamo di voler pescare tutti i post esistenti: la nostra "superclasse" GestorePost o Posts farà una select per vedere quanti post ci sono nel database e (correggetemi) in base ai risultati creerà mediante un ciclo for tanti oggetti Post quanti sono espressi dal database.

A questo punto io mi aspetto un return: questo sarà un array di oggetti Post?

E dunque dovrò utilizzare questo array nel modo seguente

Codice PHP:
$posts[0].leggiTitolo() 
$posts[0].leggiCorpoTesto()

...

$posts[n].leggiTitolo()
$posts[n].leggiCorpoTesto() 
Può avere senso una gestione simile?
si esatto, o fai ritornare un array o fai ritornare, se usi php 5.2 e successivi [per sicurezza per lo più] un oggetto che estenda la classe Iterator o IteratorAggregate ( http://it.php.net/iterator ) ... questo sempre in tema di flessibilità del codice

Infatti, se dovrai mai avere la necessità di rendere tutto ciò trasparente puoi benissimo restituire l'oggetto post che, invece di contenere già i dati, può acquisirli direttamente al primo accesso ... usando l'iterator sai chi vuole accedere all'elemento e fai recuperare i valori

Altro sistema molto usato sono gli accessor, che in php non esistono, ma sono quelli che usavi tu get/setNAME

O ancora un altra tecnica utilissima sono i proxy per gli oggetti: sempre riferito al discorso cache ... non è detto che tu acquisisca un oggetto e, l'istruzione successiva, lo usi in tutte le sue parti di conseguenza se è possibile ottimizzare puoi spostare il codice nell'oggetto proxy in modo che se vengono richiamate funzioni direttamente venga messo tutto in cache (qui il discorso è un pò più complesso ma comunque importante )

PS: i nomi dei metodi stanno meglio in inglese