Per quanto riguarda i modelli

Codice PHP:
public function fetch$id ) {
    
$selectQuery "SELECT * FROM $this->table WHERE id = :id LIMIT 0,1";

    
$data $this->pdo->executeQuery$query, array( ':id'=>$id ) )->fetch();
    if ( empty( 
$data ) ) {
        return 
NULL;
    }

    
// qui uso il modello
    
return new modelloUtente$data );

il modelloUtente mi garantisce di avere sempre i dati correttamente popolati in base al formato della tabella che viene interrogata. In più mi permette di visualizzari i dati anche in modi diversi dal normale

un modello generico di utente:
Codice PHP:
class userModel extends entity {

    protected 
$fields = array( 
        
'id',
        
'name',
        
'email',
        
'password',
        
'datetime',
        
'active',
        
'valid',
        
'groupid',
        
'groupname',
        
'picture'
    
);

    public function 
getItDatetime() {
        
$date = new DateTime$this->values->offsetGet'datetime' ) );
        return 
$date->format"d-m-Y H:i:s" );
    }

come puoi vedere ci sono i campi della tabella (per non sbagliare la selezione)

Codice PHP:
$modello = new userModel$data );

// questo è valido
echo $modello->name;

// questo no
echo $modello->divano;

echo 
$modello->datetime;
// 2014-08-29 15:40:00

echo $modello->itDatetime;
// 29-08-2014 15:40:00 
ma solo in visualizzazione