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

    +89

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    function uIsCommentAllowed($id_all)
    	{
    		$db = 'i_all';
    		$this->db->select('comment');
    		$this->db->where('id_all',$id_all);
    		$query = $this->db->get($db);
    		if ($query->num_rows() == 0) return false;
    		else 
    		{
    			$row = $query->row();
    			if ($row->comment == 1) return true;
    			if ($row->comment == 1) return false;
    		}	
    		return false;
    	}

    Кто не видит где говно, показываю: if ($row->comment == 1) return true; if ($row->comment == 1) return false;
    Теперь главный вопрос - почему на при тестировании данная ошибка не проявляется, и все вообще работает верно?

    Запостил: increazon, 25 Апреля 2012

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

    • Потому что функция возвращает значение и дальше не выполняется, или в чем трабла ?
      Ответить
      • показать все, что скрытонет блядь, не угадал. $row->comment возвращает как 0 та и 1. Но все почему-то работает правильно.
        Ответить
        • потому что, блядь, return false в if ($row->comment == 1) return false никогда не выполняется, или условие не подходит или уже из функции вышли
          Ответить
        • ну логично, если $row->comment == 0, то функция выйдет в 14 строке со значение false, разве нет ?
          Ответить
          • Да, угадал. Потому и работает правильно. Так что делать? Строку 12 отредактировать на if ($row->comment == 0) return false; или удалить вообще?
            Ответить
            • > Так что делать?
              Пиздуй учить уроки!
              Здесь тебе не форум, где помогают нубам.
              Ответить
            • ну попробуй как-то так
              if ($query->num_rows() == 0) return false;
              $row = $query->row();
              return $row->comment ? true : false;

              Если я правильно понял, то у тебя $row->comment может быть либо 1, либо 0
              Ответить
              • а приведение типов не сработает в этой ситуации?
                return ($query->num_rows() && $query->row()->comment);
                Ответить
                • Ну так даже еще лучше, я об этом не подумал. Век живи - век учись
                  Ответить
                • $query->row()->comment выдаст ошибку. Нужно именно 2 строчки писать:
                  $row = $query->row();
                  $row->comment
                  Ответить
                  • "I was really, really bad at writing parsers. I still am really bad at writing parsers." Rasmus Lerdorf
                    Ответить
                    • начиная с третьей версии языка лердофф к нему никакого отношения фактически не имеет
                      Ответить
    • новый урсус?
      Ответить
    • Автор, видимо, только что с Delphi пересел на PHP. И теперь путает педали паскалевский Result и сишный return.
      Ответить
    • if (x) return true;
      if (x) return false;

      Это какое-то раздвоение личности, но у второй личности шансов нет... :(
      Ответить
    • да ладно. вот я видел что-то вроде такого (даже где-то тут было):
      fucntion get_line($file) {
        $f=fopen($file,'r');
        $l=fgets($f);
        return $l;
        fclose($f);
      }
      Ответить

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