PHP4. ООП. Проблема с использованием класса в классе
Есть класс Leaders, предназначенный для отбора и обработки данных из БД. Так же существует класс для работы с БД - DB.
В классе DB также есть функция, которая считает кол-во запросов. Считает она правильно, но есть одно НО. Когда мы этот класс определяем внутри Leaders, то подсчет идет не очень правильно... Короче вот пример:
Отрывок класса Leaders:
Код:
class Leaders {
var $DB; // класс для работы с БД
......................
/* __CONSTRUCTOR__ */
function Leaders(&$DBlink) {
$this->DB=$DBlink; // здесь устанавливаем ссылку на класс (ИМХО здесь и есть ошибка, но не могу понять в чем, ведь по идее по ссылке передаем
}
.......
}
var $DB; // класс для работы с БД
......................
/* __CONSTRUCTOR__ */
function Leaders(&$DBlink) {
$this->DB=$DBlink; // здесь устанавливаем ссылку на класс (ИМХО здесь и есть ошибка, но не могу понять в чем, ведь по идее по ссылке передаем
}
.......
}
И некоторые фрагменты класса для БД:
Код:
class DB {
var $count=0; // подсчитывает кол-во запросов
function getCountSQLs() {
return $this->count;
}
}
var $count=0; // подсчитывает кол-во запросов
function getCountSQLs() {
return $this->count;
}
}
Далее я там провожу в файле сортировку, выборку данных и т.д.
В конце надо получить кол-во запросов к БД. Запросы к БД проводились только из класса Leaders.
Проблемы в получении данных, а именно:
Код:
print $DB->getCountSQLs(); // выводит 0
print $Leaders->DB->getCountSQLs(); // выводит 6
print $Leaders->DB->getCountSQLs(); // выводит 6
Хотя по идее в обоих случаях должно выводится 6. Я догадываюсь что ошибка должна быть именно в определении DB в Leaders, только че-то не могу понять в чем косяк...
Надо заменить
Код:
$this->DB=$DBlink;
Код:
$this->DB=&$DBlink;
Кстати, да, достаточно неприятный момент с указанием ссылок. В PHP5 стало удобнее - один раз в описании метода указывается, что передаётся ссылка на переменную. Зато в PHP4 всё однозначно - в любом месте кода видно, когда передаётся ссылка...
mfender, да не.. Я то сам ни на кого не работаю. Так от делать нечего программирую. Делал статистику для сайтика знакомого.. А у него PHP4, так что приходится на PHP4 писать)