Йа гений? =)

cDLEON

Онанист РНРСlub
Йа гений? =)

Вот недавно начал кодить без поддержки ПХП4.
Каков смысл использывать синглтоны, если имеются статические переменные ? 8)
 

Wicked

Новичок
какой смысл есть фрукты, если в мясе и так много белка?

мне кажется, ты слабо представляешь, что такое синглтон, (возможно) статические переменные, и чем они друг от друго отличаются: статические переменные - это средства языка, тогда как singleton - шаблон проектирования. Если ты сделаешь синглтон с использованием статических переменных, сингтоном от этого быть не перестает.

нет
 

cDLEON

Онанист РНРСlub
Wicked
Ну смотри...Какой смысл хранить данные в копии объекта, если этого можно достичь обычным self::blabla="asdasd"; И инкапсуляция сохранится и в каждой ф-и объекта не нужно будет эту копию извлекать для работы....
 

cDLEON

Онанист РНРСlub
Если ты сделаешь синглтон с использованием статических переменных, сингтоном от этого быть не перестает.
Вообще -для меня синглтон это некий объект в котором присутствует ф-я singleton() - которая возвращает единую копию объекта для работы в любом месте кода. А нафига нам это копия, если можно работать с его переменными и функциями напрямую, ни чего не создавая? Ведь фактически синглтон это некая капсула, от которой требуется только возможность быть глобальной в любом месте скрипта.
Либо я что то не понимаю?

-~{}~ 18.11.07 14:17:

Develar
Дельная ссылочка. Спасибо.
 

Wicked

Новичок
Во-первых, то, о чем ты тут бормочешь, есть ни что иное, как Monostate pattern. Давай тогда так вопрос поставим: зачем есть шаблон проектирования Singleton, когда есть другой шаблон проектирования - Monostate ?

Во-вторых, что значит в копии объекта? синглтон всегда один!

В-третьих:
И инкапсуляция сохранится и в каждой ф-и объекта не нужно будет эту копию извлекать для работы....
И каким же тебя monostate избавит от такой необходимости?

В-четвертых, мои предположения оправдались. Ты не знаешь, что такое статические переменные. И я еще больше уверился, что ты не знаешь, что такое singleton.
 

Pigmeich

Новичок
cDLEON
В статической переменной ты не можешь проконтролировать, что объект был сконструирован перед использованием.
 

Nelius

кипарис во дворе
Оффтоп:
Как же я люблю этот форум!) Только вчерадетально разбирался со статическими переменными и буквально следующий день топик, который вносит еще больше ясности! Спасибо!)))
 

Wicked

Новичок
Вообще -для меня синглтон это некий объект в котором присутствует ф-я singleton() - которая возвращает единую копию объекта для работы в любом месте кода. А нафига нам это копия, если можно работать с его переменными и функциями напрямую, ни чего не создавая?
эээ...
Т.е. предполагается тупо обращаться к публичным статическим свойствам, и к публичным статическим методам ДРУГОГО класса?
 

cDLEON

Онанист РНРСlub
Wicked
Во-первых, то, о чем ты тут бормочешь, есть ни что иное, как Monostate pattern.
Ну извени,конечно, но про такой паттерн я не слышал.
Да и вообще топик создавался не для того, что бы показать какой я крутой, а для того, что бы расставить для себя все точки над Ы. Все кто шутке в в названии топа не понил, йа не винават 8).
Во-вторых, что значит в копии объекта? синглтон всегда один!
То и значит. В любом случае когда ты пишешь new className ты создаёшь копию. Не зависимо от того сколько штук этого класса имеется.
И каким же тебя monostate избавит от такой необходимости?
Хм...Обычным. Если все свойства данного класса будут иметь тип static, то работать с этими данными можно будет в любом месте через className либо self.
Ты не знаешь, что такое статические переменные.
Что такое статические переменные я знаю. Потому как частенько их применял в ПХП4. А вот то, что такое синглтон, не спорю, не понял до конца. И вообще. Не совсем понятно зачем резко понадобится использывать синглтонный класс как мультитонный.
Кстати в ПХП эти статические переменные наследуются...

-~{}~ 18.11.07 14:39:

В статической переменной ты не можешь проконтролировать, что объект был сконструирован перед использованием.
Ну эта проблема решается выставлением флага.
Т.е. предполагается тупо обращаться к публичным статическим свойствам, и к публичным статическим методам ДРУГОГО класса?
А почему бы и нет? Если эти методы публичные, то и обращаться к ним можно откуда угодно.
Зы. Если я где то заблуждаюсь, поправьте. Всё таки мои слова несут не утвердительный характер. Да и на нобелевскую не рассчитываю 8)
 

Wicked

Новичок
То и значит. В любом случае когда ты пишешь new className ты создаёшь копию. Не зависимо от того сколько штук этого класса имеется.
Все правильно. Для сингтона конструкция new className вызывается максимум единожды. И хорошо сделанный сингтон не позволит сделать это больше одного раза, как ни крути.

Что такое статические переменные я знаю.
это ты кому-нибудь другому расскажи.
http://www.php.net/manual/en/language.variables.scope.php#language.variables.scope.static
А то, о чем мы тут пытаемся беседовать, называется статическими свойствами/членами.

-~{}~ 18.11.07 17:53:

Ну эта проблема решается выставлением флага.
Флага, который будет проверяться при вызове каждого метода? :) Мосье извращенец?

Да и какой флаг может быть, если первое же обращение может идти к св-ву класса?
 

cDLEON

Онанист РНРСlub
это ты кому-нибудь другому расскажи.
Хм. Можно услышать не только констатацию факта, но и объяснение, чего я не понимаю ?
Да и какой флаг может быть, если первое же обращение может идти к св-ву класса?
В классическом примере (лично для меня) к свойствам класса обычно идёт обращение через self::getVariableName();
Флага, который будет проверяться при вызове каждого метода? Мосье извращенец?
А вот об этом я не подумал. Один минус нашли 8)
 

Wicked

Новичок
cDLEON
Хм. Можно услышать не только констатацию факта, но и объяснение, чего я не понимаю ?
О том, что такое статические переменные и статические св-ва/члены класса, можно узнать в документации.
 

cDLEON

Онанист РНРСlub
О том, что такое статические переменные и статические св-ва/члены класса, можно узнать в документации
Цитировать документацию мне не нужно.
Ладно. Задам вопрос по-другому...
Что тебя убедило в том, что я не знаю\не умею работать с статическими переменными?
 

Pigmeich

Новичок
Ну эта проблема решается выставлением флага.
Есть такой принцип ООП - инкаспуляция.

То есть ты можешь тупо вызвать метод и не думать, что еще надо сделать.

То есть разница просто в том, ставит флаг объект или ты сам в клиентском коде.
 

cDLEON

Онанист РНРСlub
tf
о_О. Думал долго. Переходить ли вообще на ПХП5 без нэймспэйсов и прочего, чего даже сейчас в нём нет.
 

Krishna

Продался Java
cDLEON
Какие тебе неймспейсы, если ты не можешь понять разницу синглтона и статических свойств?
И чего "прочего"? Какие ты еще умные слова слышал?
 

cDLEON

Онанист РНРСlub
Krishna
Я не говорил, что я понять не могу. Я говорю, что я не вижу разницы. Разницу чувствуешь? Считаешь что она есть - пожалста изложи в этом топе. На хамство твоё не буду обращать внимания.
 
Сверху