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

    +149

    1. 1
    2. 2
    3. 3
    4. 4
    <?php
          @require_once('something-that-doesnot-exists.php');
          echo 'My etogo uzhe ne prochitaem((';
    ?>

    Баг ПХП. 4 часа искал методом научного echo. Ошибки не выдает, завершает выполнение как будто вызвали exit() or die(). Растолкуйте в чем суть?
    Но всё-таки виновати разработчики CodeIgniter. Они нарушили принцип KISS (keep it simple). Я например, никогда не использую @ (даже незнаю к чему этот отросток).

    Запостил: increazon, 08 Июня 2010

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

    • показать все, что скрытоУже прочитал. @ - Это падавление ошибки.
      Ответить
    • > Растолкуйте в чем суть?
      Кэп на связи. require и require_once, в отличие от include, генерируют фатальную ошибку времени выполнения, если не удаётся подключить файл. Оператор @ подавляет вывод сообщения об ошибке ("подавлять ошибку" он, извините, никак не может).
      > Но всё-таки виновати разработчики CodeIgniter. Они нарушили принцип KISS (keep it simple).
      Версия, файл, строка?
      Ответить
      • показать все, что скрытоЭто класс загрузки файла Upload. Делал собственную загрузку фотографий на сервер с FCKeditor. Самому писать вновь эти файловые манипуляции лень. Решил вырвать их класс. Вот и искал, почему это ничего не выводится, а оно конечно падало там где @require. К стати я еще и Paging вырывал у них))
        Ответить
    • А я уже давно предлагаю за @ отрубать руки.
      Ответить
      • Равно как и за неуважение к E_ALL | E_STRICT не помешало бы.
        Ответить
      • показать все, что скрытоАбсолютно согласен. Была бы отладка нормальная (без установки всякой *), пускай будет и @. А так ищи иголку в сене.
        Ответить
        • Хотите "отладки нормальной" - поднимайте сервер на локалхосте, ставьте IDE, настраивайте её на совместную работу с сервером, и будет вам гуйное счастье. В качестве решения "побыстрее и чтоб не думать" могу предложить NetBeans и XAMPP.
          Ответить
          • интересно какое значение этот чудик вкладывает в понятие 'нормальная отладка'?
            простенькое юнит-тестирование на круг обходит всякие там примитивные 'отладки'
            Ответить
            • Думаешь, люди, способные "засобачить" вызов критичной функции, пишут к своему поделию юнит-тесты?
              Ответить
              • не удержался - скачал CodeIgniter. так вот там есть класс Unit_test, значит еще не все потеряно =)
                Ответить
            • показать все, что скрытоКстати что такое юнит-тест?? Нормальная отладка - это:
              -точка останова
              -динамическое вычисление переменной, изменение
              -просмотр структуры данных, объектов
              -ассемблер-код
              -стек,дамп памяти, регистры процессора
              Ответить
              • >что такое юнит-тест
                ох епт) лихо ты себя в минуса загнал, хотя казалось бы куда дальше и так -∞ была
                Ответить
                • показать все, что скрытоесли тот что в CodeIgniter - то он слабее слабого!
                  Ответить
                  • а тебе почем знать, что слабее, а что нет?
                    ты же только полчаса назад об этом узнал
                    Ответить
                    • показать все, что скрытоhttp://code-igniter.ru/ вот читай русскую инструкцию о юнит-тест. Я ее давно прочитал, и знаю.
                      Ответить
                      • что ты там давно знаешь? про юнит-тестирование я тебе рассказал, ты же только на отладчик фапать умел. знахарь, мля, обосрался на простейшем вопросе, вот и побежал срочно гуглить, чтоб себя не совсем ущербом представить
                        Ответить
                        • Тем не менее я был прав: UnitTest в CodeIgniter - слабее слабого. Все что он может это сравнивать переменные и писать лог.
                          Ответить
                          • Напиши свой на питоне с пробелами.
                            Ответить
                          • :)))) Вы не поверите --- но большинство движков для юнит-тестов только и могут, что сранивать переменные.

                            Модульное тестирование это идеология а не инструмент.
                            Написать юнит-тесты можно вообще без инструментов, или с универсальным (как JUnit) инструментом.

                            Советую Вам все таки просветится на тему модульного тестирования.
                            Если Вы когда-нибудь решите перейти из PHP во взрослые языки -- это может очень пригодиться.
                            Ответить
                            • просто ты не в теме)
                              это "дизайнер, верстальник, программист(php,Javascript;My Sql), контент-наполнитель, и SEO оптимизатор" а еще "истинный ХАКЕР", вообще почитай его посты - лулзы генерировать он умеет
                              Ответить
                            • "В результате на каждую строку исходного кода потребуется 3-5 строк тестового кода. .... Это означает, что ошибки интеграции, системного уровня, функций, исполняемых в нескольких модулях не будут определены." - Прочитал на википедии. Наша задача - писать как можно быстрей. И пока мы не пишем Мега - проект, модульное тестирование и нахрен не нужно! А если хочется - создай отдельный файл, скопируй функцию, проверь значение - я так и делаю.
                              Ответить
                              • > на каждую строку исходного кода потребуется 3-5 строк тестового кода

                                угу, прям на каждую

                                > Прочитал на википедии

                                хаха) охуенный источник

                                >Наша задача - писать как можно быстрей

                                дадад быстро говнякать - суть пхп

                                >создай отдельный файл, скопируй функцию, проверь значение - я так и делаю.

                                не раздолбал еще C-c C-v ?
                                оригинальный пхп-способ проведения регрессионных тестов
                                Ответить
                          • а что еще нужно в тесте? что бы сам исправлял код? )
                            Ответить
          • показать все, что скрытоА вы думал что я позьзуюсь галимым Денвером? Я XAMPP все время и использовал. Спасибо, поищу эти Бобы. Просто вопрос жёсткой отладки РНР не так уж часто появляется, но все же иногда....
            Ответить
            • Xampp-Денвер те же яйца, с разных ракурсов, пхп галимый
              Ответить
            • Чем это Денвер "галимый"? Нет, я не провоцирую искаропкисерверосрач, наоборот. Эта сборка точно так же вполне себе рабочая и точно так же при наличии рук может быть легко доведена и настроена под себя. Я предложил XAMPP, потому что у Бобов дефолтная конфигурация рассчитана на работу с ним, меньше настраивать.
              Ответить
              • показать все, что скрытоУже поставил XDebug и NetBeans. Все работает, отладка на нормальном уровне! Остался один вопрос - как настроить папку xampplite/htdocs по умолчанию для NetBeans а то он создает проект в Моих Документах, потом в браузере "404"?
                Ответить
                • Криво снюхался он, что ли, с XAMPP'ом?.. Сейчас создал новый проект - всё поставилось в xampp/htdocs, притом сразу было предложено поставить именно туда.
                  Ответить
                  • Все путя - НЕ по-умолчанию, может по-этому. Впрочем неважно, руками буду выбирать. К тому же у меня проекты существующие - подхватывает нормально!
                    Ответить
                    • >К тому же у меня проекты существующие
                      мне их искренне жаль :'(
                      Ответить
                  • eclipse+xampp+xdebug - полет нормальный, странно.
                    а с нетбинсом всякое может быть
                    Ответить
              • "при наличии рук" PHP, Apache и MySQL могут быть установлены практически на любой платформе менее чем за час.

                В качестве бонуса никто не будет Вам срать в файлик hosts (как делает denver), а за одно Вы разберетесь в платформе, под которую пишите.

                До появления поделки Котерова понимание основ функционирования веб-серверов было обязательным для веб-программирования.

                Но пришел Денвер, и теперь Интернеты кишат PHP программистами, ни разу не видившими ни httpd.conf ни my.cnf.

                Отсюда у людей проблемы с кодировкой в mysql, неумение подключить модуль итд.
                Спасибо Котерову за наше счастливое децтво.
                Ответить
                • Котеров виноват, или не Котеров, а быдло все-равно бы пришло в пхп-кодинг - редко появляются язычки с порогом вхождения на уровне 'печатающая обезьяна'
                  Ответить
                • как я понимаю, человеку надоело ставить это дело несколько раз, решил он это дело себе облегчить, а потом выкинул в интернет.
                  Разработчик должен упрощать себе жизнь, а желательно - и другим. Это, конечно же, не освобождает от непонимания функционирования этих систем и неумения обойтись без таких чудо-пакетов
                  Ответить
      • Да ладно?
        Ответить
    • Keep it simple, stupid!
      Ответить
    • Котеров виноват, или не Котеров, а это чудо (http://www.usbwebserver.com/) устанавливать даже не надо грузится с флэшки
      Ответить
    • Анонимус
      менее чем за 20 минут)))
      Ответить
    • какое говнище
      Ответить
      • 10 лет назад так не казалось?
        Ответить
        • казалось
          я обсираю пхп с 2004-го года примерно
          Ответить

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