Назначение средства отображения без жира SQL состоит в том, чтобы автоматически отображать столбцы таблицы в свойствах объекта PHP. Это делается во время создания экземпляра в DB\SQL\Mapper::__construct
.
Поэтому, когда вы вызываете $mapper->find()
или $mapper->select()
, создание экземпляра уже выполнено, и столбцы таблицы уже сопоставлены с объектом $mapper
.
Это объясняет результаты вашей команды var_dump
.
Теперь вы можете настроить список отображаемых столбцов, но это необходимо сделать при создании экземпляра:
// map all columns
$mapper = new DB\SQL\Mapper($db,'table_name');
// only map col1 & col2 columns
$mapper = new DB\SQL\Mapper($db,'table_name','col1,col2');
Что касается метода select()
, мне интересно, почему этот метод был обнародован. Он используется внутри find()
, но сам по себе не очень удобен для использования, учитывая, что все указанные поля должны совпадать с объявленными столбцами при создании экземпляра и что вычисляемые столбцы должны быть как псевдонимами, так и объявлены. См:
$mapper = new DB\SQL\Mapper($db,'table_name','col1,col2');
// ex.1: column not declared
$results = $mapper->select('*');
echo $results[0]->col3; // undefined field col3
// ex.2a: computed column not aliased
$results = $mapper->select('SUM(col1)');
echo $results[0]->{'SUM(col1)'}; // undefined field SUM(col1)
// ex.2b: computed column aliased but not declared
$results = $mapper->select('SUM(col1) AS sum1');
echo $results[0]->sum1; // undefined field sum1
// ex.2c: computed column declared but not aliased
$mapper->sum1 = 'SUM(col1)';
$results = $mapper->select('SUM(col1)');
echo $results[0]->sum1; // empty
// ex.2d: computed column aliased and declared
$mapper->sum1 = 'SUM(col1)';
$results = $mapper->select('SUM(col1) AS sum1');
echo $results[0]->sum1; // OK!
Как видите, использование этого метода очень строго. Я бы не советовал им пользоваться, если вы действительно не знаете, что делаете. Вместо этого используйте find()
.