Должны ли DAO всегда возвращать один тип данных?

У нас есть несколько POPO (простых старых объектов PHP) / VO, таких как:

class SampleVO  {
private $id;
private $name;
private $otherBitOfData;

//constructor

//getters and setters
}

У нас также есть DAO для извлечения этих объектов из базы данных:

class SampleVoDAO  {
getSampleVoById($id)  {
//returns the SamplePopo object fetched by ID.
}

getSampleVoByName($id)  {
//returns the SamplePopo object fetched by Name.
}

//etc...
}

В некоторых случаях нашему классу контроллеров требуется только один бит данных от объекта, а не весь объект.

Это лучше:

  1. Пусть DAO вернет только объекты SamplePopo и получит нужные мне данные через геттер (из контроллера):

    class VoController  {
    $VoDAO = new SampleVoDAO();
    $myVO = VoDAO->getSampleVoById(3);
    $dataINeed = myVO->getOtherBitOfData();
    
    //do something with $dataINeed
    }
    

Или же

  1. Пусть DAO вернет нужные мне данные напрямую:

    //in the SampleVoDAO class:
    getOtherBitOfDataFromVOByID($id)  {
    $vo = getSampleVoById($id);
    
    return $vo->getOtherBitOfData;
    }
    

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …