Сразу оговорюсь, что крутых знаний в области ООП не имею, пытаюсь только с этим разобраться, но в документациях не могу найти свою проблему.
Суть в следующем. У меня есть класс Member для работы с пользователями, в нем я описываю метод getUserInfo, чтобы выбрать данные конткрентого пользователя из базы. Потом я хочу описать методы для получения адреса, имени и тд. Для этого я могу внутри метода присваивать переменной метод getUserInfo, но это не рационально, потому что каждый раз будет выбираться информация из базы. Я хочу один раз вытащить данные методом и потом использовать их во всем классе.
class Member {
protected $db;
public $db_table;
public $user_id;
public $user_info;
public function __construct($db) {
$this->db = $db;
$this->db_table = 'Invites';
$this->user_id = $_SESSION['user'];
$this->user_info = $this->getUserInfo();
}
/**
*
* Get full user information
*
* @return array
*/
public function getUserInfo()
{
$sql = "SELECT * FROM users WHERE id='$this->user_id'";
if (!$result = $this->db->query($sql)) {
echo "Ошибка: " . $this->db->error . "\n";
exit;
}
$data=array();
while($row = $result->fetch_assoc()){
$data[] = $row;
}
return $data;
}
/**
*
* User Name
*
* @return string
*/
public function getUserName()
{
$userinfo = array_shift($this->user_info);
return $userinfo['username'];
}
/**
*
* User email
*
* @return string
*/
public function getEmail()
{
$userinfo = array_shift($this->user_info);
return $userinfo['email'];
}
/**
*
* User Login
*
* @return string
*/
public function getLogin()
{
$userinfo = array_shift($this->user_info);
return $userinfo['login'];
}
/**
*
* Invite days
*
* @return string
*/
public function getInviteDays()
{
$userinfo = array_shift($this->user_info);
$invite = $userinfo['invite'];
$sql = "SELECT * FROM `Invites` WHERE number='$invite'";
if (!$result = $this->db->query($sql)) {
echo "Ошибка: " . $this->db->error . "\n";
exit;
}
$timedate=array();
while($row = $result->fetch_assoc()){
$timedate[] = $row;
}
return $userinfo['login'];
}
/**
*
* Check admin
*
* @return boolean
*/
public function is_admin()
{
$sql = "SELECT * FROM users WHERE id='$this->user_id' && member_group = 'Admin'";
if (!$result = $this->db->query($sql)) {
echo "Ошибка: " . $mysqli->error . "\n";
exit;
}
if ($result->num_rows === 0) {
return false;
} else {
return true;
}
}
Что я делаю: в конструкторе я переменной присваиваю метод, который описывается ниже. Но у меня на странице работает только ПЕРВАЯ вызванная функция, например getLogin, там нормально выводится логин, но вот все остальные функции тогда возвращают пустые значения. Наверняка я что-то делаю не верно. Как это дело можно исправить?