Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> global в методах класса 
V
    Опции темы
Simpliest
Дата 24.9.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



Цитата(bars80080 @  24.9.2009,  15:45 Найти цитируемый пост)
а мне нужно более одного экземпляра. как раз касаемо работы с БД 

Все равно делай один общий пусть даже с пулом БД или коннектов.

Хотя если общего кроме хостинга ничего нет smile тогда - да. Каждому приложению своя прослойка.

Добавлено через 46 секунд
Цитата(bars80080 @  24.9.2009,  16:31 Найти цитируемый пост)
мне нужно несколько экземпляров 

Тебе уже указали. Registry заменяет собой пачку синглтонов.


--------------------
user posted image
PM   Вверх
NewDima
Дата 24.9.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



icewind, извини, не вник, оплошал =)
Посчитал, что ты у фабрики запрашиваешь каждый раз новый объект
PM ICQ   Вверх
Simpliest
Дата 24.9.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



Цитата(youri @  24.9.2009,  15:56 Найти цитируемый пост)
не все 

Конкретно для БД - все вменяемые. Такое уточнение подойдет?

Чем меньше точек входа для базовых операций - тем лучше.

Цитата(youri @  24.9.2009,  15:56 Найти цитируемый пост)
В статье, кстати, сказано, что привязка к именам классов хуже, чем к именам переменных

Глупость кстати. Никаких разумных доводов этому нет.

И статью следует читать аккуратно. Писали ее не гуру. Но даже гуру ошибаются smile


--------------------
user posted image
PM   Вверх
icewind
Дата 24.9.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



NewDima, да не за что извиняться. С кем не бывает  smile 


--------------------
user posted image
PM MAIL Skype   Вверх
bars80080
Дата 24.9.2009, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Simpliest @  24.9.2009,  16:38 Найти цитируемый пост)
Registry заменяет собой пачку синглтонов. 

разобраться б что там написано
PM MAIL WWW   Вверх
icewind
Дата 24.9.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



Один объект, который представляет собой реестр, хранящий список инициализированных объектов, и обладает геттерами, возвращающими эти объекты (ссылки)

Это сообщение отредактировал(а) icewind - 24.9.2009, 16:52


--------------------
user posted image
PM MAIL Skype   Вверх
NewDima
Дата 24.9.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



bars80080, а в чем конкретно?
Как использовать зендовский реестр? так просто, по строковым ключам, которые в твоем случае могут быть для тебя в виде 'interface' и 'site'. Разве не удобно?
PM ICQ   Вверх
bars80080
Дата 24.9.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(icewind @  24.9.2009,  16:51 Найти цитируемый пост)
реестр, хранящий список инициализированных объектов

объектов разных классов?
PM MAIL WWW   Вверх
NewDima
Дата 24.9.2009, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



да хоть чего вообще, это же альтернатива глобальному массиву
PM ICQ   Вверх
icewind
Дата 24.9.2009, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



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

$db = new PDO('mysql:host=localhost;dbname=demo', '[user]', '[password]');
$registry->set ('db', $db);

$db2 = new PDO('mysql:host=localhost;dbname=demo', '[user]', '[password]');
$registry->set ('db2', $db2);

потом
Код

$db = $registry->get('db2');


а лучше
Код

$db =& Registry::get('db2');


Хотя мне кажется обычная фабрика здесь подойдет отлично. Пример я приводил

Это сообщение отредактировал(а) icewind - 24.9.2009, 17:01


--------------------
user posted image
PM MAIL Skype   Вверх
bars80080
Дата 24.9.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(NewDima @  24.9.2009,  16:52 Найти цитируемый пост)
да хоть чего вообще, это же альтернатива глобальному массиву 

наверное, самый важный момент, на него мне ещё не ответили

вот есть:

Код

function metod() {
    global $db;
    ....
}
в ряде методов некоего третьего класса. нужно ли отходить от этой схемы?

я лично испытываю раздражение от этих global (а я имею право испытывать раздражение), но я всё-таки вменяемый человек и готов мириться с тем что лучше
PM MAIL WWW   Вверх
icewind
Дата 24.9.2009, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



На мой взгляд да. Нужно отходить и использовать factory для получения коннекта к базе.
Код

function metod() {
    $db =& Factory::getDB('connection');
    ....
}



--------------------
user posted image
PM MAIL Skype   Вверх
sTa1kEr
Дата 24.9.2009, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(bars80080 @  24.9.2009,  17:31 Найти цитируемый пост)
нет, одна для сайта и одна для интерфейса работы

Тогда я не совсем понимаю, что значит "для интерфейса работы". Но в любом случае, раз на сервере используются несколько баз, то вполне оправданно было бы использовать полные имена и отказаться от select_db.

Цитата(icewind @  24.9.2009,  17:56 Найти цитируемый пост)
Хотя мне кажется обычная фабрика здесь подойдет отлично. Пример я приводил 

Да, фабрика хорошо бы подошла если бы были коннекты к разным серверам. А так, конечно, от нее не очень много проку в фабрике одного объекта smile Хотя, с другой стороны универсальность и задел на будущее...
PM MAIL   Вверх
NewDima
Дата 24.9.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



или
Код

function metod() {
    $db = Zend_Registry::get('database interface');
    ....
}
function metod1() {
    $db = Zend_Registry::get('database site');
    ....
}

 smile 
PM ICQ   Вверх
sTa1kEr
Дата 24.9.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(bars80080 @  24.9.2009,  18:01 Найти цитируемый пост)
наверное, самый важный момент, на него мне ещё не ответили

Имхо, да, любые переменные должны быть инкапсулированны настолько, насколько это возможно.

Добавлено через 1 минуту и 46 секунд
Цитата(NewDima @ 24.9.2009,  18:10)
или
Код

function metod() {
    $db = Zend_Registry::get('database interface');
    ....
}
function metod1() {
    $db = Zend_Registry::get('database site');
    ....
}

 smile

Я имел ввиду
Код

function metod() {
    $db = Zend_Registry::get('database');
}

А все запросы переписать так, что бы они не завесили от того site это или interface  smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.