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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как часто использовать синглтоны, Дикое желание использовать их всегда 
:(
    Опции темы
ArNic
Дата 2.8.2012, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В моем фреймворке-"велосипеде" есть классы, относящиеся к ядру. К этим классам из других классов как 
Код

global $c_db; 
$c_db->show($id);


Пришло время поменять кой чего в структуре для 5.3. Заодно решил заюзать сингтоны, которые уже давно пользуют другие программисты. И чем больше я читаю, тем больше убеждаюсь (например здесь) что сингтоны нужны для: 
  • инициализации класса (сейчас решается инициализацией класса в переменную в начале файла с классом)
  • обращения к нему откуда угодно (аналог global)
  • не заботиться о его инициализации (в обычной жизни решает auto_load и include_once вкупе с инициализацией в начале файла с классом)
  • не боятся, что глобальная пременная с инициализированным классом будет подменена (этого я не боюсь)
И встают вопросы:
  • когда его разумно применять (при условии что я точно знаю, что несколько раз класс не надо будет инициализировать)?
  • если его завязать на функцию __call будет ли вернее c_db::show($id), чем обращаться как c_db::instance()->show($id)?


Это сообщение отредактировал(а) ArNic - 2.8.2012, 17:57
PM MAIL ICQ   Вверх
baldina
Дата 2.8.2012, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



вообще-то синглтон это подпорка. в мире (в т.ч. компьютерном) почти нет вещей, присутствующих в единственном экземпляре.
синглтон суть аналог global, поэтому неудобен для расширения проекта.
как некое техническое решение (например, однократной инициализации) то почему бы нет. главное не злоупотреблять.
впрочем, в программировании для web свои особенности, здесь синглтоны чаще уместны чем, скажем, в десктоптном приложении.
Цитата(ArNic @  2.8.2012,  17:54 Найти цитируемый пост)
когда его разумно применять

перефразируя классика
Цитата

если можете не употреблять, не употребляйте.

Цитата(ArNic @  2.8.2012,  17:54 Найти цитируемый пост)
c_db::show($id) vs c_db::instance()->show($id)

принципиальной разницы восприятия нет

PM MAIL   Вверх
ArNic
Дата 2.8.2012, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Еще один вопрос. Что лучше работа  ядром через синглтоны или реестр? Имеется ввиду ядро фреймворка
PM MAIL ICQ   Вверх
baldina
Дата 3.8.2012, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



что подразумевается под реестром?
PM MAIL   Вверх
Fortop
Дата 3.8.2012, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



паттерн Registry видимо


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
baldina
Дата 3.8.2012, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



так он и есть синглтон
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.0456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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