Привет, ребята (и девочки?) Мне интересно, возможно ли элегантно отобразить результаты запроса PDO на член массива в классе, а не отображать их как открытые свойства этого объекта.
Скажите, что у меня есть (сжато) следующее:
class DBObject {
protected
$record = array();
function __construct(array $record) {
if(!empty($record)) {
$this->loadRecord($record);
}
}
}
В идеале я хочу вызвать конструктор с массивом значений, переданных из базы данных, а не использовать __set или любые другие странные методы. Поэтому было бы здорово использовать существующий API PDO.
Моя грубая get_all
функция на данный момент зашла так далеко:
static function get_all() {
$class = get_called_class();
$results = DB::factory()->query('SELECT * FROM ' . $class . ' ORDER BY ID');
$results->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, $class);
return $results;
}
Примечание: я запускаю PHP 5.3 и MySQL через PDO и уже знаю, что эту проблему можно решить с помощью __set, но я явно хочу не использовать ее в пользу чего-то более производительного.