1. PHP / Говнокод #4718

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    ob_start();
    $goodsInterested = clone Core::$Controllers->Helpers->Good_Recomendation;
    $goodsInterested->display(array(
    	"modelId" => $this->model['id'],
    	"type" => 'interested',
    ));
    $interested = ob_get_clean();

    В системе виджеты - синглтоны.
    Чтобы как-то хоть работать, клонируем синглтон (!!!)
    Результат приходится оборачивать в ob_start, т.к не предусмотрено ничего типа echo $widget->render();

    Запостил: mitallast, 23 Ноября 2010

    Комментарии (21) RSS

    • вот и протекла абстракция, прямо как у Спольски.

      с одной стороны мы пафосно городим контроллеры, с другой -- вносим знание о низкоуровневом ob_start.

      и опять хеши вместо объектов) ох уж пых
      Ответить
      • >и опять хеши вместо объектов
        nani?
        Ответить
        • пытаюсь троллить
          Ответить
          • я серьезно, причем тут объекты?
            Ответить
            • вот такую конструкцию
              array(
              	"modelId" => $this->model['id'],
              	"type" => 'interested',
              )

              В сях бы описали структурой. в пыхе это логично сделать объектом.
              $goodsInterested->display(new RequestInfo($this->model->getId(), Types::Interested));


              что бы не опечататься в слове modelId, и не поймать потом null. Что бы легко переименовать его во время рефакторинга. Что бы внутри объекта можно было бы сделать какие-то преобразования.
              Итд.
              Ответить
              • как все страшно в пыхомирке
                Ответить
                • Плохо программировать можно на любом языке. Тут дело то не в языке, а в людях, едва прочитавших о паттернах программирования - да и то, только первую главу о всемогущем синглтоне. Плюс ко всему понятия не имеют чем отличается статический класс от синглтона.

                  Вообще в практике программирования есть такое понятие, как прототип. Беда в том, что прототип стал продакшеном.
                  Ответить
                  • люди, читавшие о паттернах обычно не пишут на пхп)
                    Ответить
                    • Пишут. Еще как пишут. В пыхе есть все для того чтобы отделять логику от представления даже я бы сказал логики друг от друга.
                      Ответить
                      • малоли что там есть)
                        в пыхе есть PDO, но это не мешает всем писать mysql_query.
                        в пыхе есть объекты, но это не мешает всем писать ""type" => 'interested',"
                        Ответить
                        • PDO это обертка mysql_
                          Если разрабатывается небольшой проект и непредпологается использования других СУБД пишут mysql_ иначе используют PDO

                          ООП в пыхе напрочь кривое
                          в JS тоже есть ООП ну его же используют только в библиотеках
                          Ответить
                          • >>PDO это обертка mysql_
                            и ADO.NET обертка и JDBC обертка

                            >>и непредпологается использования других СУБД
                            PDO это не только способ абстракции от БД (все равно диалекты SQL у всех разные), это еще и способ решить проблему SQL injection на корню.
                            Достаточно использовать statements, и ничего нигде не надо будет экскейпить.
                            Зачем работать с mysql_query, если есть нормальная, безопасная, универсальная обертка? Почему в perl всегда работают только через DBD, в джаве через JDBC, в нете через ADO.NET, и только в php я постоянно вижу mysql_query ?:)))

                            >>ООП в пыхе напрочь кривое
                            угу :(

                            >>в JS тоже есть ООП ну его же используют только в библиотеках
                            в JS ужасное ООП: все таки это прототипо-ориентированный язык, а не объектно-ориентированный.

                            Писать на JS тоже удовольствие не из больших (потому например и существует GWT)
                            Ответить
                          • > в JS тоже есть ООП ну его же используют только в библиотеках
                            ORLY?
                            Ответить
                            • а кто еще в здравом уме будет его пользовать ??
                              Ответить
                              • эх, школота

                                я нихуя не понял и не пользуюсь
                                я - медиана
                                -----------------------
                                никто не пользуется

                                вопрос на 3 балла - где ошибка в это силлогизме?
                                Ответить
                                • я понял поэтому не пользуется, кто понял тот при составлении библиотек функций тоже возможно пользуется. Но любом случае это все край как криво.
                                  Ответить
                                  • чтобы не повторяться, о жс и библиотеках

                                    http://govnokod.ru/3512#comment34192
                                    Ответить
    • Если синглтон можно клонировать, это говна кусок, а не синглтон.
      Ответить
      • угу, надо в синглтонах всегда писать магический метод __clone, тогда костыль не сработает:
        public function __clone() //для клоунов
        {
          throw new Exception('Are you crazy?');
        }
        Ответить
    • уже в "пыхомирке" принято, вместо смены архитектуры подставлять костыли.
      Зачем тут синглтон? "потому что это круто"
      Ответить

    Добавить комментарий