"PHP" / Говнокод #5291 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
class country extends baza
{
......
function show_description($country=NULL)
{
    if ($this instanceof country)
        $quest="SELECT description FROM countries WHERE name=\"$this->name"";
    if ($this instanceof city) // йобаный стыд!!! 0_0
        $quest="SELECT description FROM cities WHERE name\"$this->name\" AND country=\"$country\" ";
......
}

class city extends country
.....

предок "country" знает о потомке "city"

Говнокод из говнокнижки Елены Бенкен "PHP, MySQL, XML Программирование для интернета" БХВ-Петербург,ISBN 5-9775-0039-4 страница 209

Запостил: StriderMan StriderMan, (Updated )

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

  • Что-то говнокоды из книжек на PHP начинают набирать популярность...
    И после этого ещё удивляются, что "некоторые PHP программисты иногда говнокодят"...
    Ответить
    • документация пхп состоит из говна. Когда смеешься над ней, то тебе отвечают: "ну это же пример, а не настоящее приложение"
      Популярная красная библия пхп (издательства врокс) состоит из говна.
      Популярная книга котерова состоит из говна.

      Книг о ПХП, состоящих не из говна, нет в природе
      Ответить
    • некоторые программисты учатся по книжкам вместо того чтобы открыть документацию по языку от производителя в которой все есть
      Ответить
      • Документация написана для профессионалов, новичку решительно невозможно чему-то научиться по ней не заработав рак мозга.

        Поэтому если надо научиться чему-то совершенно новому - предпочитаю книжки из серии "Для чайников". Но это не значит что они должны учить говну. В них должны быть просто и доступно описаны самые примитивные вещи. Буквально разжевано в кашу. А что посложнее - уже сам допетришь по мануалам, потом.
        Ответить
  • это вообще какой-то феерический пиздец
    все таки ООП в ПХП надо запретить
    все равно им пользоваться не умеют
    Ответить
    • В красной wrox-книге "PHP 5 для профессионалов" я говна не увидел
      Ответить
        • цитирую эту книгу:

          Использование системы
          Теперь вы можете оценить реальную мощь объектноориентированного подхода.
          Следующий код будет подробно отображать все записи о контактах из базы данных.
          Этот код нужно поместить в файл test.php.
          <?php
            require_once('class.DataManager.php');
            function println($data) {
              print $data . "<br>\n";
          {  
            $arContacts = DataManager::getAllEntitiesAsObjects();
            foreach($arContacts as $objEntity) {
              if(get_class($objEntity) == 'individual') {
                print "<h1>Частное лицо - {$objEntity->__toString()}</h1>";
              } else {
                print "<h1>Организация - {$objEntity->__toString()}</h1>";
          {    
              if($objEntity->getNumberOfEmails()) {
                //У нас есть электронная почта! Выведите заголовок
                print "<h2>Электронная почта</h2>";
                for($x=0; $x < $objEntity->getNumberOfEmails(); $x++) {
                  println($objEntity->emails($x)->__toString());
          {      
          {    
              if($objEntity->getNumberOfAddresses()) {
                //У нас есть адреса!
                print "<h2>Адреса</h2>";
                for($x=0; $x < $objEntity->getNumberOfAddresses(); $x++) {
                  println($objEntity->addresses($x)->__toString());
          {      
          {    
              if($objEntity->getNumberOfPhoneNumbers()) {
                //У нас есть телефоны!
                print "<h2>Телефоны</h2>";
                for($x=0; $x < $objEntity->getNumberOfPhoneNumbers(); $x++) {
                  println($objEntity->phonenumbers($x)->__toString());
          {      
          {    
              print "<hr>\n";
          {
          Ответить
          • Если бы в книгах по PHP исправляли бы все ляпы, эта глава была бы единственной. Исправлять ляпы - дело твоё. Они всего лишь демонстрируют ООП в данном конкретном случае. Никто не пишет, что так нужно делать, просто интересно посмотреть как делают другие.
            Ответить
            • Не согласен. В книге все должно быть идеально, за это между прочим дохуя денег берут с покупателя
              Ответить
              • Хорошо, будьте так любезны, укажите в коде выше, где принципиальное концептуальное говно?!
                Ответить
                • Да в заголовке же! Теперь вы можете оценить реальную мощь объектноориентирова� �ного подхода.

                  Где в приведенном коде ООП кроме оператора -> ?
                  Ответить
                  • Вся логика инкапсулированна в объекте. По-вашему, ООП, это использование операторов? Короче, это не аргумент.
                    Ответить
                    • Для демонстрации ООП надо было показать как делать классы а не как их дергать в процедурном стиле
                      Ответить
                      • Для демонстрации ООП надо было книжку писать о Питоне
                        Ответить
                      • До этого кода уже всё было показано. Вы что абсолютный пурист ООП что ли?! Мож ещё отдельный класс сделать и инкапсулировать поток выполнения в методе main()? PHP - мультипарадигменный Я.П., так почему бы этим не пользоваться, тем более если удобно. Ну речь не об этом. Я же любезно попросил уточнить: "где принципиальное концептуальное говно?"
                        Ответить
                        • Я вас понял

                          Приведенный код выдернут из контекста видимо? На предыдущих страницах все эти классы описаны, Если так то концептуального говна нет.

                          А для PHP имхо не так уж и не правильно обмазывать его HTMLом. В конце концов он и сделан для формировани HTMLа
                          Ответить
                    • да какая логика-то?

                      Вы почитайте хоть что нить про ооп, про паттерны хотя бы почитайте (гэнг ов фор) и узнаете чем ООП отличается от ковбойского стиля
                      Ответить
                      • Ещё один пурист... Видимо вы меня не слышите. PHP не чисто поддерживает все концепции ООП, он - МУЛЬТИПАРАДИГМЕННЫЙ! Про ООП я читал в теории, не надо тут ЛЯ-ЛЯ.
                        Ответить
                        • в таком случае зачем называть процедурный (да еще и очень говеный) код "мощью ООП"?
                          Ответить
            • причем тут ляпы?
              эта глава -- христоматия по тому, как НЕ НАДО писать код
              это скопище антипаттернов и запахов кода
              тут и копипаста сплошная или вшитый в логику гуи и все на свете

              это пзц, а не книга
              Ответить
              • Я и не говорю, что там идеальные примеры программ. Их можно довести до ума. Про GUI в декораторе мне тоже не по душе, честно говоря.
                Ответить
      • Вы хочете каки?
        Их есть у нас!

        Глава 3:
        public static function getAddressData($addressID) {
              $sql = "SELECT * FROM \"entityaddress\" WHERE \"addressid\" = $addressID";
              $res = pg_query(DataManager::_getConnection(), $sql);
              if(! ($res && pg_num_rows($res))) {
                 die("Невозможно получить данные адреса для $addressID");
        {      
              return pg_fetch_assoc($res);
        {   
           public static function getEmailData($emailID) {
              $sql = "SELECT * FROM \"entityemail\" WHERE \"emailid\" = $emailID";
              $res = pg_query(DataManager::_getConnection(), $sql);
              if(! ($res && pg_num_rows($res))) {
                 die("Невозможно получить данные электронного адреса для $emailID");
        {      
              return pg_fetch_assoc($res);
        {   
           public static function getPhoneNumberData($phoneID) {
              $sql = "SELECT * FROM \"entityphone\" WHERE \"phoneid\" = $phoneID";
              $res = pg_query(DataManager::_getConnection(), $sql);
              if(! ($res && pg_num_rows($res))) {
                 die("Невозможно получить номер телефона для $phoneID");
        {      
              return pg_fetch_assoc($res);
        {


        Знаете, в чем цинизм?
        Эта глава называется "объектный подход в действии"
        Ответить
        • Вы видимо хотели, чтобы они в одной главе указали на "НЕ В РОТ ИБАЦЦО" иерархию классов взаимодействия с БД PostgreSQL. А может и описали ее функциональность в деталях?! Опять же, тогда эта глава была бы единственной в книге. А придраться ко всему можно, даже к Б. Кернигану и Д. Ритчи "The C programming language" и к Питеру Абелю со своим ассемблером
          Ответить
        • Типа не в действии. Способ отображения таблиц в объекты - это тоже способ. Кого-то это наталкивает на какие-то свои идеи, а у кого-то просто их нет, тогда он начинает обсирать чужие. Это безусловно искусство! Копипастить и троллить я смотрю все научились.
          Ответить
          • в этом коде нет ни одного объекта
            зато есть копипаста и sql инъекция

            если Вы когда нить бросите пхп и изучите какой-нить язык программирования -- Вы меня поймете
            Ответить
            • PHP - далеко не первый для меня ЯП. Я всю жизнь (хм..) Java занимаюсь, начинал с С/С++. PHP использую как простое эффективное средство для написания web-приложений ЛЮБОЙ степени сложности. Не было ни дня, что я пожалел об этом.
              Ответить
              • >>простое эффективное средство для написания web-приложений ЛЮБОЙ степени сложности.

                знаете, в чем разница между говеным и неговеным приложением?

                неговеное приложение не позиционирует себя как ВЕБ приложение. Потому что неговеный архитектор знает, что веб -- это всего лишь гуи. Никто же не говорит "я консольный программист" или "я свинг программист".

                Когда человек говорит "веб-приложение", то сразу понятно что у него там HTML вперемешку с логикой, отовсюду образаются к $_GET, нету юнит-тестов и куча копипасты.

                На сложность приложения это, кстати, никоим образом не влияет. Влияет на хрупкость, но даже очень хрупкое приложение можно поддерживать если не леница активно и бодро копипастить)
                Ответить
                • WEB разный бывает, задачи для WEB бывают разными, собственно как и везде. Я бы не стал говорить: "Я типа пишу на JSP, потому что не знаю PHP; поэтому PHP - говно что ли?!" Неговеное application не позиционирует себя как ВЕБ... ?! Вот это новость!
                  Ответить
        • Не работал с «PostgreSQL» на таком глубоком уровне.
          Ответить
  • Сколько ни писали книжки про пых, а все равно только говно выходит.
    Показательно. Товарищи, даже не пытайтесь это исправить.
    Кодомакаки облегчают конкурентную борьбу = )
    Ответить
    • кодомакаки приводят к тому, что неискушенный заказчег с баблом при упоминании ПХП начинает смотреть на вас как на говно.
      Ответить
      • это искушенный заказчег. Которому уже обезьянки сделали "портал" за 60 баксов
        а неискушенному все равно, на чем будет крутиться, главное, что бы это было красиво и эффективно несло золотые яички
        Ответить
        • Искушенный все же знает, что PHP на самом деле мощный и серьезный инструмент. Я наверное имел ввиду заказчика который все же бывает в инете хотя бы на башорге и вконтагтиге
          Ответить
          • > PHP на самом деле мощный и серьезный инструмент
            ЖЖОШ! 😀
            Ответить
          • да
            башорг -- серьезное приложеное
            именно башорг доказывает тот факт, что на php можно писать очень сложные вещи
            Ответить
              • хайлоад это совсем не та область, где важна красота языка)
                в каком-то смысле быстрое приложение это антоним красивому приложению
                Ответить
                • А при чем тут красота? Вплане красоты PHP один из самых уродливых языков. Следом C++ (ловлю минусы). Самый красивый код выходит на Паскале и SQL (DML).
                  Ответить
                  • при том, что красота нужна для сложной бизнес-логики
                    и не нужна для перформанса

                    именно потому, на пхп нет ни одного приложения с логикой сложнее форума.

                    а хайлоады -- есть
                    Ответить
  • 13 января был в убогом городе Березники, заходил в книжный магазин, полистал книг 10 по PHP, все они примерно одного содержания и все для начального уровня.

    Только 2 книги содержали прилично написанные примеры. И только в одной из двух примеры были рабочие.

    Самое обидное, что цена на литературу такой тематики, в разы больше.
    Ответить
    • мне вот интересно, как вы проверяли примеры на работоспособность, не отходя от полки? = )
      Ответить
      • А он видимо из тех людей, которые в уме исходники компилируют...
        🙂
        Ответить
        • Нет там всё гораздо проще, просто нужно внимательно прочитать код сверху вниз, если вы читаете не говнокод, вы сразу заметите нехватки ";", ошибки в регулярных выражениях
          if(preg_match("[A-z]", $abc))...
          и т.д. Просто надо захотеть их найти и всё =)

          Вы же читаете код, перед тем, как проголосовать за говнокод
          Ответить
              • фря уже не так православна
                фря была православна когда небыло линухов с портами и хендбуками

                но теперь уже и линух вполне себе удобен)
                Ответить
      • на прошлой работе меня нагнули сдать SCJP
        вот уж где в мозгу-то накомпилировал
        Ответить
    • Так это отличный повод написать стопицотую книжку для чайников и получить от этого ПРОФИТ.
      Дело в том, что если язык лёгкий, а человек стопудово уверен, что он погромист от б-га, он всё равно найдёт, не книжку, так форум.
      Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8