Credo che DTO dovrebbe essere il più semplice e facile possibile. Tuttavia, dopo il suggerimento del mio amico, l'opportunità di convalidare i dati impostati in DTO sembra allettante.
Diamo un esempio seguente:
//this class only holds bunch of objects from the future
class FooFuture{
/** @var ArrayObject */
$collection;
(other fields ommited for readability)
/**
* @param ArrayObject $collection
*/
public function __construct(ArrayObject $collection = null){
if(null === $collection){
$this->collection = new ArrayObject();
} else {
$this->collection = $collection;
}
}
/**
* @param ArrayObject $col
*/
public function setCollection(ArrayObject $col){
$now = new DateTime();
foreach($col as $element){
if($element->getDateTime() < $now){
throw new InvalidArgumentException('Collection should only contain objects from the future');
}
}
}
/**
* @return ArrayObject
*/
public function getCollection(){
return $this->collection;
}
}
Che ne pensi?