Добрый день. У меня такая проблема: создал класс user для работы с пользователями. И в нем хочу создать свойство $db, которое через метод должно выдрать глобальную переменную $db (подкл. к mysqli). Как это сделать, вот в чем вопрос. Попытался сделать так:
private function db() { $this->db = global $db; }
Но делать так нельзя. Помогите кто может, а то уже давно голову ломаю
private function db() {
global $db;
$this->db = $db;
}
Mobiaaa, как я раньше до этого не допер)) спасибо огромное
полноценный пример
<?php
class user{
private $db = array();
public function getSql($sql){
$this->db = $sql;
}
public function info($id){
$query = $this->db->query('select * from `users` where `id` = "'.$id.'"')->fetch_assoc();
return $query;
}
}
// работа с классом
$user = new user;
$id = 1;
// Подключаем БД
$user->getSql($mysqli);
// вывод информации
$info = $user->info($id);
echo $info['login'];
?>
еще вариант замутить родительский класс и оттуда дергать бд
elfi, я думал над этим. но классов у меня немного (пока), поэтому необходимости в этом (пока) нет)
Юзать глобальные переменные не правильно. В твоём случае можно сделать в классе юзеров свойство db статическим и в начале скрипта назначить ему $db. Но это тоже не очень хорошо.
Второй вариант сделать свойство БД статическим, что даст глобальную область видимости к свойству БД.
Третий вариант самый подходящий - Registry. Класс регистратор
Rakovskiy, класс регистратор? чтобы до конца понять, можешь привести пример?