![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Render |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 12.5.2005 Репутация: нет Всего: 3 |
Написан класс управления БД `sql`.
Есть класс управления модулями использующий БД. Проблема заключается в том, что создаётся лишний экземпляр класса. Например:
В классе `modules` приходится создавать новый экземпляр класса `sql` в методах использующих БД, но задача состоит в том чтобы использовать уже созданое соединение... В конструкторе класса sql можно проверять, не создано ли уже соединение, но проблема этим не решается, задача не создавть экземпляров класса `sql` в классе `modules`, но как обращаться к методам этого класса... Вот блин объяснил... Это сообщение отредактировал(а) Render - 20.9.2005, 21:05 |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
1. & new..
2. через global включай создагнный объект куда нужно. |
|||
|
||||
| Render |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 12.5.2005 Репутация: нет Всего: 3 |
Первый способ по подробнее пожалуйста... типа & new sql давать ссылку на экземпляр...где, и каким образом, мне нужно по возможности отделить классы, то есть обойтись вообще без наследования...
А второй тоже не удовлетворяет условию! |
|||
|
||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Когда ты в 4 создаешь объект у тебя создается две его копии. & перед new создает одну копию.
Почему? |
||||
|
|||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
Можно на прямую в конструкторе передавать ссылку на экзэмпляр
-------------------- ГЫ... |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
То есть в классе `modules`:
Я правильно понял, просто временно не могу протестировать... |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
Только php5 - используй функцию с названием как у класса. Только sql класс должен быть определён в том же файле или как включение сделан. А так да. Моё предложение - сделать общий класс для подгрузки модулей, и в нем уже ссылку в конструктор класса передавать напрямую. -------------------- ГЫ... |
|||
|
||||
| Render |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 12.5.2005 Репутация: нет Всего: 3 |
Я как раз уже вовсю юзаю пятую версию. =)
Использую автолоад...
Эт как? |
||||
|
|||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
Если 5, то используй приватный конструктор,
Благодаря приватному конструктору у тебя вызовет ошибку вызов экземпляра через new И тебе придётся вызывать функцию getInstance(), которая либо создаёт новый экземпляр, либо возвращает существуещий. Здесь принцип, остальное сам. -------------------- ГЫ... |
|||
|
||||
| Render |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 12.5.2005 Репутация: нет Всего: 3 |
Отличная мысля, спасибо!
Хотя что-то тут больно наворочено всё, вариант с амперсандом подходит больше, именно из-за своей лаконичности... Это сообщение отредактировал(а) Render - 21.9.2005, 22:36 |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
ИМХО, правильнее всего было бы выделить класс подключения к БД и его экзепляр использовать в классах, использующих подключение к БД.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| AntonioBanderaz |
|
||||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
Если опять же php5, то он по умолчанию все структуры передаёт по ссылке.
Добавлено @ 18:51
Мне тоже так кажется и хранить его где-нидь либо в $_SESSION либо в $_GLOBAL. Добавлено @ 18:53
Тебе ничего не мешает создать новый екземпляр. Мой вар это исключает...
-------------------- ГЫ... |
||||||
|
|||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Extensions | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |