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

    +150

    1. 1
    2. 2
    3. 3
    if (!empty ($src) && !array_key_exists($src, $this->loadedjscripts)) {
                if (isset ($this->loadedjscripts[$src]))
                    return;

    Если ключа нет, то проверяем не null ли значение в массиве по этому индексу.

    Запостил: Agel_Nash, 22 Июня 2013

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

    • Минусующим привет. Если ключа нет, или он null, то все равно достаточно будет проверки isset
      Ответить
      • Зачем тогда вообще array_key_exists в языке?
        Ответить
        • array_key_exists какраз таки корректен и свое дело делает.
          Ответить
        • потому что
          1. записи нет: isset - false, array_key_exists - false
          2. значение null: isset - false, array_key_exists - true

          хотя если есть гарантия "правильного" ключа, то можно не заморачиваться
          Ответить
      • В описании указано одно. Тут в комментарии ты говоришь другое. В контексте кода не понятно есть ли какие-либо действия далее после второго условия, которое кстати вообще не сработает:

        $arr = array("b" => 1, "a" => null, "c" => 2);
        var_dump(array_key_exists("a", $arr)); // true
        var_dump(array_key_exists("b", $arr)); // true
        var_dump(isset($arr['a'])); // false
        var_dump(isset($arr['b'])); // true

        Говно только вот втором условии. Но, считай что его просто нет. Может его просто удалить забыли от старой временной проверки.

        Что там было дальше, какие действия?
        Ответить
        • https://github.com/modxcms/revolution/blob/develop/core/model/modx/modx.class.php#L1436
          public function regClientStartupScript($src, $plaintext= false) {
                  if (!empty ($src) && !array_key_exists($src, $this->loadedjscripts)) {
                      if (isset ($this->loadedjscripts[$src]))
                          return;
                      $this->loadedjscripts[$src]= true;
                      if ($plaintext == true) {
                          $this->sjscripts[count($this->sjscripts)]= $src;
                      } elseif (strpos(strtolower($src), "<script") !== false) {
                          $this->sjscripts[count($this->sjscripts)]= $src;
                      } else {
                          $this->sjscripts[count($this->sjscripts)]= '<script type="text/javascript" src="' . $src . '"></script>';
                      }
                  }
              }


          В контексте использования. Второе условие никогда не выполняется
          Ответить
      • Ты воспринимаешь минус как личное оскорбление?
        Ответить

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