[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как сохранять результаты работы с объектом в класс
Guest
у меня есть к примеру класс по работе с базой данных.

создаю экземпляр в самом начале страницы $db = new database();
этот объект накапливает в себе некоторые данные, например кол-во запросов, время запросов и прочее.

так вот, как быть, если я хочу использовать его в каком-то классе без потери содержимого.

Говоря образно, как заставить объект "путешествовать" по всему документу(классам и.т.д, не теряя накопленного содержимого?



Спустя 27 минут (26.11.2010 - 16:11) twin написал(а):

Спустя 1 час, 15 минут, 18 секунд (26.11.2010 - 17:26) Guest написал(а):
twin
спасибо, почитал, но по-моему это не тот ответ на мой вопрос.
мне не нужно предотвращать, повторное создание объекта, мне нужно объект уже содержащий данные использовать в других классах, как если бы сделать так

class 
{
function __constructor
{
$this->db = &$GLOBALS['db'];
}
}


но насколько такой вариант приемлем?

Спустя 14 минут, 8 секунд (26.11.2010 - 17:40) Basili4 написал(а):
Guest
создавай ситнглтон и не разрушай его делай методы на запись set и методы на чтение get

и храни все что тебе надо в объекте.

Спустя 8 минут, 45 секунд (26.11.2010 - 17:49) Guest написал(а):
Basili4
ну вот создал я синглтон (естесственно добавил все что нужно в сам класс)))
$db = mysql_database::getInstance();

далее где-то делается запрос
$db->query("SELECT......");

после этого запроса в $db попадает информация, что был сделан 1 запрос


как же теперь этот экземпляр $db использовать в другом классе

class 
{
function __constructor
{
$this->db = ???????
echo $this->query_count;
}
}



Спустя 3 минуты, 21 секунда (26.11.2010 - 17:52) Basili4 написал(а):
$db->getinfo(); // ляля таполя
$db->getreult(); // Создавай методы которые будут тебе возвращать необходимую инфу.

я не пойму в чем же проблема то.


Спустя 4 минуты, 8 секунд (26.11.2010 - 17:56) Guest написал(а):
Basili4
проблема в том, что класс class не знает такой переменной $db. и соответственно $db->getinfo() - для него как плевок в океан.

я там выше спросил
$this->db = &$GLOBALS['db'];
- такой способ насколько подходит?

Спустя 6 минут, 19 секунд (26.11.2010 - 18:03) Basili4 написал(а):
Guest
Глобальные переменные это плохо очень плохо.

Спустя 9 минут, 19 секунд (26.11.2010 - 18:12) Guest написал(а):
кажется врубился
$this->db = mysql_database::getInstance();


он ведь вернет то что нужно?

Basili4
все время об этом слышу,а чем они именно плохи,

Спустя 1 минута, 23 секунды (26.11.2010 - 18:13) twin написал(а):
Guest
Цитата
проблема в том, что класс class не знает такой переменной $db. и соответственно $db->getinfo() - для него как плевок в океан.

Ты просто не вник. Вот это
$db = mysql_database::getInstance(); 
при повторном использовании не создает новый, а возвращает старый, единственный объект. Соответственно
class 
{
function __constructor
{
$this->db = mysql_database::getInstance();
echo $this->query_count;
}
}

Спустя 1 минута, 8 секунд (26.11.2010 - 18:14) twin написал(а):
Уже сам допер))) Респект.

Спустя 1 минута, 51 секунда (26.11.2010 - 18:16) Guest написал(а):
twin
спасибо большое, давно надо было про синглтон прочитать. Про фабрик тоже прочитал, жду продолжения))))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.