Diciamo che ho un modello di dati per i post di un blog e ho due casi d'uso di quel modello - ottenendo tutti i post di blog e ricevendo solo post di blog che sono stati scritti da un autore specifico.
Ci sono fondamentalmente due modi in cui posso rendermene conto.
1o modello
class Articles {
public function getPosts() {
return $this->connection->find()
->sort(array('creation_time' => -1));
}
public function getPostsByAuthor( $authorUid ) {
return $this->connection->find(array('author_uid' => $authorUid))
->sort(array('creation_time' => -1));
}
}
Primo utilizzo (presentatore / controller)
if ( $GET['author_uid'] ) {
$posts = $articles->getPostsByAuthor($GET['author_uid']);
} else {
$posts = $articles->getPosts();
}
2o
class Articles {
public function getPosts( $authorUid = NULL ) {
$query = array();
if( $authorUid !== NULL ) {
$query = array('author_uid' => $authorUid);
}
return $this->connection->find($query)
->sort(array('creation_time' => -1));
}
}
Secondo utilizzo (presentatore / controller)
$posts = $articles->getPosts( $_GET['author_uid'] );
Per riassumere (dis) vantaggi:
1) codice più pulito
2) codice più riutilizzabile
Quale pensi sia meglio e perché? C'è qualche tipo di compromesso tra questi due?