Ссылка на результаты SQL из класса PHP - PullRequest
1 голос
/ 08 апреля 2011

Я использую ezsql для доступа к моей базе данных Mysql, которая прекрасно работает. $ db-> get_results () дает мне результаты в форме класса, поэтому я ссылаюсь на такие поля, как $ user-> name, $ user-> email и т. д.

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

function getVal($field){
return $user->$field;
}

Затем вызовите функцию как: getVal("name") или getVal("email");

Это вообще возможно? Будем очень благодарны за любые предложения!

Спасибо, Alex

Ответы [ 2 ]

0 голосов
/ 08 апреля 2011

Это не имеет никакого смысла .. почему вы заменяете средство доступа к объекту вызовом функции, если это не метод в фактическом классе для $user?

При этом вам нужно передать пользователю функцию:

function getVal($field, $result)
{
  return $result->$field;
}

но лучше всего было бы реализовать ArrayAccess в классе Result, поскольку это то, что вы пытаетесь сделать. Таким образом, вы можете использовать $user['name'] точно так же, как $user->name или добавить публичный метод get к классу результатов:

public function get($field)
{
  return $this->$field;
}

Не то чтобы вы могли использовать переменные для доступа к свойствам, что делает то, что вы пытаетесь сделать, еще более странным для меня:

// you can always do the following
$field = 'name';
echo $user->$field;
0 голосов
/ 08 апреля 2011

В примере, который вы разместили, переменная $ user не установлена ​​внутри функции - вы должны передать ее в качестве параметра:

function getVal($user, $field){
    return $user->$field;
}

Но я не совсем понимаю, зачем вам это делатьчто ...


(что-то вроде дикой догадки)
Если эта функция на самом деле является методом внутри некоторого класса User, который содержит данные,Вы должны использовать $this для доступа к свойствам:

function getVal($user, $field){
    return $this->$field;
}
...