Синглтон
От: dimgel Россия https://github.com/dimgel
Дата: 04.05.11 12:51
Оценка:
class User {

        public static function singleton($Username = NULL) {
                if (!isset(self::$Instance)) {
                        $c = __CLASS__;
                        self::$Instance = new $c($Username);
                }
                return self::$Instance;
        }

...
}


Без комментариев...
/
Re: Синглтон
От: Abyx Россия  
Дата: 04.05.11 12:57
Оценка: +2
Здравствуйте, dimgel, Вы писали:

D>
D>class User {

D>        public static function singleton($Username = NULL) {
D>                if (!isset(self::$Instance)) {
D>                        $c = __CLASS__;
D>                        self::$Instance = new $c($Username);
D>                }
D>                return self::$Instance;
D>        }

D>...
D>}
D>


D>Без комментариев...


а что за язык и где лопата?
единственное что я вижу — это то что $Username будет игнорироваться при последующих вызовах, ну так может так и задумано %)
In Zen We Trust
Re[2]: Синглтон
От: dimgel Россия https://github.com/dimgel
Дата: 04.05.11 13:10
Оценка: -19
Здравствуйте, Abyx, Вы писали:

A>а что за язык


Какая разница?

A>и где лопата?


Эх-эх-эх... Ламеры наступают...

A>единственное что я вижу — это то что $Username будет игнорироваться при последующих вызовах, ну так может так и задумано %)


Да. Именно. Так и было задумано: изгадить паттерн singleton и впихнуть его в класс "пользователь", который не является синглтоном по определению.

Вот если автор этого чуда, вернувшись из отпуска, задаст аналогичный вопрос про лопату, вот тут я действительно расстроюсь.

Не смешная шутка, увы. Всем сорьки.
Re[3]: Синглтон
От: Fantasist  
Дата: 04.05.11 13:31
Оценка:
Здравствуйте, dimgel, Вы писали:

D>Здравствуйте, Abyx, Вы писали:


A>>а что за язык


D>Какая разница?


A>>и где лопата?


D>Эх-эх-эх... Ламеры наступают...



При чем тут ламеры? Я тоже лопаты не увидел. А то что там у вас этот класс User делает — мы совершенно без понятия, как там это должно быть.
Re[4]: Синглтон
От: dimgel Россия https://github.com/dimgel
Дата: 04.05.11 13:35
Оценка: -16
Здравствуйте, Fantasist, Вы писали:

F>А то что там у вас этот класс User делает — мы совершенно без понятия, как там это должно быть.


Что такое синглтон, ты видимо тоже без понятия.
Re: Синглтон
От: cvetkov  
Дата: 04.05.11 13:38
Оценка: +1 :))) :)))
это известный паттерн "кто первый, тот и папа" является близким родственником более известного "кто последний тот, и папа"
Re[5]: Синглтон
От: divergo  
Дата: 04.05.11 13:53
Оценка:
D>Что такое синглтон, ты видимо тоже без понятия.
Ну забыл человек написать
class User 
{
    private User(){}
}

или как оно у вас там.
Re[4]: Синглтон
От: Tony2k  
Дата: 04.05.11 14:12
Оценка:
Здравствуйте, Fantasist, Вы писали:


F> При чем тут ламеры? Я тоже лопаты не увидел. А то что там у вас этот класс User делает — мы совершенно без понятия, как там это должно быть.

Да просто название неудачное. Никакой это не singleton получается. Но если переименовать — вполне себе нормальный код.
Re[5]: Синглтон
От: dimgel Россия https://github.com/dimgel
Дата: 04.05.11 14:21
Оценка:
Здравствуйте, Tony2k, Вы писали:

T>Да просто название неудачное. Никакой это не singleton получается. Но если переименовать — вполне себе нормальный код.


Да, без более широкого контекста степень кривизны похоже действительно не видна. Вызов singleton($Username) используется для поднятия текущего юзера из сессии (конструктор User выполняет запрос к базе), а в остальных местах по коду разбросан вызов singleton() без параметров. Так что вполне себе кривой синглтон, на самом деле.
Re[6]: Синглтон
От: Eugeny__ Украина  
Дата: 04.05.11 15:42
Оценка:
Здравствуйте, dimgel, Вы писали:

D>Здравствуйте, Tony2k, Вы писали:


T>>Да просто название неудачное. Никакой это не singleton получается. Но если переименовать — вполне себе нормальный код.


D>Да, без более широкого контекста степень кривизны похоже действительно не видна. Вызов singleton($Username) используется для поднятия текущего юзера из сессии (конструктор User выполняет запрос к базе), а в остальных местах по коду разбросан вызов singleton() без параметров. Так что вполне себе кривой синглтон, на самом деле.


OMG.
С этого надо было начинать, просто код сам по себе просто производит впечатление, что он для другого, и метод не так назван. А так жесть, конечно. Выделенное вообще .
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[7]: Синглтон
От: dimgel Россия https://github.com/dimgel
Дата: 04.05.11 16:06
Оценка:
Здравствуйте, Eugeny__, Вы писали:

D>>конструктор User выполняет запрос к базе

E__>Выделенное вообще .

Угу. Там все entities такие, сами себя умеют загружать. Всё на базе и в духе DataObject. Феноменальной кривости горбуха.
Re[6]: Синглтон
От: bkat  
Дата: 04.05.11 19:07
Оценка: +3
Здравствуйте, dimgel, Вы писали:

D>Здравствуйте, Tony2k, Вы писали:


T>>Да просто название неудачное. Никакой это не singleton получается. Но если переименовать — вполне себе нормальный код.


D>Да, без более широкого контекста степень кривизны похоже действительно не видна.


Такие вещи надо с коллегами по работе обсуждать.
Обычная рабочая рутина. Ничего забавного и смешного.
Re[7]: Синглтон
От: dimgel Россия https://github.com/dimgel
Дата: 05.05.11 05:44
Оценка:
Здравствуйте, bkat, Вы писали:

B>Такие вещи надо с коллегами по работе обсуждать.


Коллеги с обсуждений съезжают. Боятся, что оно рассыпется при первом же касании. Что неудивительно, ибо весь код написан в лучших традициях динамики так, что они даже не в состоянии выяснить, используются ли где поля класса, потому что присваиваются эти поля без объявлений, и поиску строки по всему коду они не верят.

B>Обычная рабочая рутина. Ничего забавного и смешного.


Полностью согласен, ничего смешного. Крайне тоскливо с таким кодом работать и не иметь возможности привести его в порядок, потому что "насяльника запрещает".
Re: Синглтон
От: Calc Россия  
Дата: 05.05.11 10:31
Оценка:
ну вродь чем то похоже
А Username — чтоб пропихнуть через сессии скорее всего.

http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D0%B3%D0%BB%D1%82%D0%BE%D0%BD#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80_.D0.BD.D0.B0_PHP_5
Пример на PHP 5

<?php
class Singleton {
 
    protected static $instance;  // object instance
 
    /**
     * Защищаем от создания через new Singleton
     *
     * @return Singleton
     */
    private function __construct() { /* ... */ }
 
    /**
     * Защищаем от создания через колонирование
     *
     * @return Singleton
     */
    private function __clone() { /* ... */ }
 
    /**
     * Возвращает единственный экземпляр класса
     *
     * @return Singleton
     */
    public static function getInstance() {
        if ( is_null(self::$instance) ) {
            self::$instance = new self;
        }
        return self::$instance;
    }
 
    public function doAction() { /* ... */ }
 
}
 
//usage
Singleton::getInstance()->doAction();


?>
Re: Синглтон
От: Calc Россия  
Дата: 05.05.11 11:01
Оценка:
Здравствуйте, dimgel, Вы писали:

D>
D>class User {

D>        public static function singleton($Username = NULL) {
D>                if (!isset(self::$Instance)) {
D>                        $c = __CLASS__;
D>                        self::$Instance = new $c($Username);
D>                }
D>                return self::$Instance;
D>        }

D>...
D>}
D>


D>Без комментариев...


Если это и вправду PHP
То однозначный косяк будет с наследованием.
Если будет класс от User, то при вызове singleton всегда будем получать User...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.