Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: позднее статическое связывание [4]
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
0) Название - должно отражать своё действие. Поэтому и принято писать getInstance или instance
1) зачем здесь наследование?
2) когда нужно дофига синглтонов (суть глобальные данные), что может появиться идея наследоваться от них - стоит внимательно посмотреть на архитектуру, нужны ли они вообще, эти синглтоны.
----- PostgreSQL DBA
DeepVarvar
Отправлено: 17 Октября, 2012 - 14:54:00
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Мелкий пишет:
когда нужно дофига синглтонов (суть глобальные данные)
Я говорил что просто пишу абстрактный класс, он - один, все обращения к нему - статические, создать объект от него - низзя... Чем это не удовлетворяет "свойствам" синглтона?
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Мелкий
0) не спорю. ...
1) минимизация кода
2) обычно это не которые модели, частенько требующие некой инициализации, чтения конфигов, которые для всех обращений однотипны, и чтоб каждый раз не тратиться на их повторное чтение и разбор, а попутно не плодить в памяти пачку одинаковых (не однотипных) объектов и юзаются одиночки. (Добавление)
caballero пишет:
потому что половина кода, в частнсти наличие базового класса, не имеет смысла
с таким отношением вообще не имеет смысла большая часть того что делается, но это лирика.
хотелось бы более развернутое пояснение по:
caballero пишет:
а то что в програме нужно стопицот синглетонов говорит еще и о проблеммах с архитектурой.
Мелкий
Отправлено: 18 Октября, 2012 - 12:50:35
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
DlTA пишет:
минимизация кода
8 строк кода реализации синглтона и вдвое больше - синтаксического обвеса?
DlTA пишет:
обычно это не которые модели, частенько требующие некой инициализации, чтения конфигов, которые для всех обращений однотипны, и чтоб каждый раз не тратиться на их повторное чтение и разбор, а попутно не плодить в памяти пачку одинаковых (не однотипных) объектов и юзаются одиночки.
config::instance('желаемый конфиг'), не?
----- PostgreSQL DBA
DlTA
Отправлено: 18 Октября, 2012 - 13:08:38
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Мелкий пишет:
8 строк кода реализации синглтона и вдвое больше - синтаксического обвеса?
обвеса так кстатит только 2 строчки. но ЗАБЕЙТЕ НА ЭТО
меня больше интересует почему одиночка плохо.
Мелкий пишет:
config::instance('желаемый конфиг'), не?
и как этим дальше пользоваться?
насколько я понял:
1) Я должен знать или переключаться и подглядывать как именно называется то, что мне вбивать в кавычки
2) -//-, что именно оно мне возвращает и как называется элемент который мне нужен. (да я достаточно линив)
то есть суть всего этого высказывания в том, чтоб по максимуму делегировать на IDE мои телодвижения.
Мелкий
Отправлено: 18 Октября, 2012 - 13:46:27
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Хм. Варианты писать на языке или с использованием языка я встречал, а вот проектирование ради ide?.. Мне это кажется настолько странным, что не могу ничего сказать.
DlTA пишет:
меня больше интересует почему одиночка плохо.
Потому что это - глобальные данные. Мне это кажется достаточно веской причиной внимательно относиться к сиглтонам и думать, действительно ли этот класс должен быть синглтоном (после обдумывания вопроса - а нужен ли здесь вообще ещё один класс).
----- PostgreSQL DBA
EuGen
Отправлено: 18 Октября, 2012 - 13:51:54
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Singleton можно в некотором смысле считать антипаттерном, поскольку он неявно влияет глобально на программу. Это почти что то же самое, что глобальная переменная - а потому ухудшает переносимость кода и в ряде случаев его масштабируемость.
И, разумеется, повод для размышления - если требуется множество подобных объектов.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
eai
Отправлено: 18 Октября, 2012 - 13:54:45
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009 Откуда: Петроград
Помог: 10 раз(а)
попробуй использовать вместо self:: static::
DlTA
Отправлено: 18 Октября, 2012 - 14:07:36
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Мелкий пишет:
а вот проектирование ради ide
абстрагируемся, но ведь люди используют фреймверки?! и используя их, пишут уже с учетом появившихся при этом тонкостей, чем в данном случае хуже использование возможностей IDE? (автоподстановка с учетом коментов phpDoc).
EuGen пишет:
Это почти что то же самое, что глобальная переменная - а потому ухудшает переносимость кода и в ряде случаев его масштабируемость.
проблемы с глобальными переменными встречал, когда это был динамический объект, который мог менять свое состояние после использования в различных местах код, но в моем случае это скорей статический объект, принимающий состояние при инициализации, и выполняющий все методы на основе этого состояния, что может лучше может подойти в таком случае чем одиночка? (Добавление)
eai пишет:
попробуй использовать вместо self:: static::
это к чему?
caballero
Отправлено: 18 Октября, 2012 - 15:45:39
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
абстрагируемся, но ведь люди используют фреймверки?! и используя их, пишут уже с учетом появившихся при этом тонкостей, чем в данном случае хуже использование возможностей IDE? (автоподстановка с учетом коментов phpDoc).
никто не пишет код ради IDE потому как выполнятся он будет не на IDE. Да и IDE разные тоже.
по той же причине существуют всякие makefile чтобы проекты можно было собирать независимот от окружения и наличия IDE.
Хочешь IDE - делай это не в ущерб кодированию, в данном случае нужно убрать бессмысленный базовый клас.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.