Пользовательский объект на основе таблицы базы данных - PullRequest
0 голосов
/ 09 июня 2010

Предположим, у меня есть запрос к базе данных, который выглядит следующим образом -

select name, gender, birthday from person where person_id = 1;

При выполнении этого запроса возвращаются некоторые записи из базы данных. Я хочу выполнить этот запрос внутри функции, а затем создать пользовательский объект, который будет содержать точные атрибуты в качестве имен столбцов с соответствующими значениями. В качестве примера предположим, что объектом является X . Таким образом, он будет иметь три атрибута: X-> name , X-> пол и X-> birthday , с соответствующими значениями из записей.

В качестве второго примера рассмотрим следующий запрос -

select test1, test2, test3 from test where test_id = 1;

Я хочу выполнить этот запрос внутри той же функции и с использованием того же метода, а затем создать пользовательский объект Y , который будет содержать атрибуты Y-> test1 , Y-> test2 и Y-> test3 .

Это выполнимо в PHP? Если так, то как?

Редактировать: Под пользовательским объектом я подразумевал любой тип объекта. Это не обязательно должен быть экземпляр определенного класса или что-то подобное. Я просто хочу вернуть объект из этой функции, чтобы я мог заполнить соответствующие классы из значений свойств возвращаемого объекта.

Ответы [ 2 ]

3 голосов
/ 09 июня 2010
foreach ($result as $key => $value)
{
    $your_object->{$key} = $value;
}
2 голосов
/ 09 июня 2010

РЕДАКТИРОВАТЬ: этот ответ предполагал, что Архангел использовал MySQL, что оказывается не так.Извините за ошибку!Я оставлю здесь свой ответ на случай, если кто-нибудь из MySQL столкнется с ним, а также при необходимости сохранит комментарии.

Если вам не нужны пользовательские классы, и вы хотите, чтобы имена пользовательских атрибутов были только встроковые объекты, это все, что вам нужно:

$row_object = mysql_fetch_object($result);

В противном случае вам нужно будет написать собственный класс самостоятельно (я не уверен, нужен ли конструктор или функция автоматически заполняет ваш объект данными):

class X
{
    public $name;
    public $gender;
    public $birthday;
}

Затем вызовите функцию следующим образом:

$row_object = mysql_fetch_object($result, 'X');

Я не знаю встроенного способа для генерации классов на лету;вам придется писать свои собственные классы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...