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

    +155

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    global $strError, $MESS, $HTTP_GET_VARS, $arrFORM_FILTER;
    	global $find_date_create_1, $find_date_create_2, $lAdmin;
    	$str = "";
    	CheckFilterDates($find_date_create_1, $find_date_create_2, $date1_wrong, $date2_wrong, $date2_less);
    	if ($date1_wrong=="Y") $str.= GetMessage("FORM_WRONG_DATE_CREATE_FROM")."<br>";
    	if ($date2_wrong=="Y") $str.= GetMessage("FORM_WRONG_DATE_CREATE_TO")."<br>";
    	if ($date2_less=="Y") $str.= GetMessage("FORM_FROM_TILL_DATE_CREATE")."<br>";

    bitrix

    - использование HTTP_GET_VARS уже давно deprecated
    - магические переменные find_date_create_1, find_date_create_2, да и lAdmin тоже не понятно что
    - зачем-то используются символы Y и N вместо true и false или 1 и 0

    Запостил: memclutter, 28 Августа 2014

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

    • Админ наверно может вносить любые данные.
      А если не исползовать true/false, то не вижу принципиалной разницы межды 1 и "Y".
      Другое дело, исползовать global - вот ето уже не феншуй.
      Ответить
      • ну и к <br> можно придраться
        Ответить
      • php, автоматически преобразует 1 в true, а 0 в false. Но вот мне кажется конструкция if ($boolValue) будет быстрее чем if ($stringValue == 'Y'), т.к. в втором случае помимо проверки условия идет сравнение строк, а это займет немного времени, конечно это не критично, но все же в программировании true и false лучше чем 'Y' 'N'.
        Ответить
        • кстати, какой у пхп приоритет приведения? например если сравнивать число и строку он число к строке приведет или наоборот попытается?
          Ответить
          • ПХП попытается всё сделать наихудшим образом. Совсем недавно был пример, когда строка "0lol" при сравнении с числом приводилась к числу.
            Ответить
            • "0lol" успешно приводилось к 0? Жесть
              Ответить
              • А еще в старых пыхах "312321368721836821638123" == "312321368721836821638124".
                Ответить
                • потому что он сначала кастует в инт, а все символы в инт не влезают?)
                  Ответить
                  • Теперь вроде как нет.
                    Ответить
                    • Исправили только в 5.4.

                      Во всё ещё популярном 5.3 до сих пор "312321368721836821638123" == "312321368721836821638124".
                      Ответить
                  • Ну а вообще, кошерный способ сравнивать строки - это "===".
                    Ответить
              • > "0lol" успешно приводилось к 0
                Да оно и сейчас успешно приводится. Просто, емнип, == для джвух строк перестало пробовать кастоваться в инты.
                Ответить
                • >>Просто, емнип, == для джвух строк перестало пробовать кастоваться в инты.

                  кто вообще подумал, что кастование строк в инты при проверке равенства - хорошая идея?
                  Ответить
                  • Чтобы ленивые макаки могли не кастовать параметры скрипта в числа, а юзать прям так, в виде строк.
                    Ответить
                    • Но это же... безумие!
                      Ответить
                      • Вся суть оригинального PHP в безумии - магические кавычки, register globals и имена многих функций (например parse_str) чего стоят.

                        В пятой ветке хоть немного причесали.
                        Ответить
                      • Или Спарта?
                        Ответить
                        • Это была настолько очевидная шутка, что она не нуждалась в озвучивании.
                          Ответить
    • это же битрикс, там свои значения для boolean
      Ответить

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