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

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    private function urlEncoder($val)
        {
            return str_replace('%7E', '~', rawurlencode($val));
        }  
      
        private function getParametersAsString(array $data)
        {
            $params = [];
            foreach ($data as $key => $val)
                $params[] = $key .'='. $this->urlEncoder($val);
            return implode('&', $params);
        }

    методы urlEncoder и getParametersAsString кривая замена стандартным функциям urlencode и http_build_query

    Запостил: snayps, 13 Ноября 2015

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

    • три кодстайла в 12 строках кода

      это пых, детка
      Ответить
      • Где здесь три кодстайла, гость?
        Ответить
        • Видимо, имелось в виду
          getParametersAsString
          rawurlencode
          str_replace
          Ответить
        • Не знаю где три, но как я понял, Гостя смущает наличие CamelCase у пользовательских методов и under_score у встроенных функций php, скорей всего человек не пишет на пыхе и не знает, что они встроенные.
          Ответить
          • Это что-то меняет? Или наоборот это удобно чтобы отличать?
            Ответить
            • >это удобно чтобы отличать
              Именно. Во многих языках разные сущности именуют по-разному. Вон в питоне, например, классы именуют CamelCase'ом, в отличии от всего остального.
              Ответить
              • Т.е. встроенные классы на самом деле как бы и не классы вовсе?
                Ответить
                • Ладно, требуется именовать согласно PEP8. Доволен?
                  Ответить
                  • Речь шла о том почему встроенные и не встроенные классы по разному именуются.
                    Ответить
              • Конечно. И только в ПХП функцию str_replace именуют не так, как функцию rawurlencode
                Ответить
                • > И только в ПХП

                  С++
                  fgets
                  std::basic_iostream::getline
                  std::basic_iostream::tellg
                  std::vector::push_back
                  std::nth_element

                  Python
                  string.startswith
                  csv.Writer.writerow
                  argparse.ArgumentParser.add_option
                  unittest.TestCase.setUp
                  Ответить
                  • >>fgets
                    это наследние плейн си. Хотя в крестах правда тоже зоопарк>

                    >>Python
                    Кстати да) По пеп8 должно быть ``starts_with`` и set_up.
                    Но set_up явно потырили из какой-нить джавы
                    Ответить
                  • >unittest.TestCase.setUp
                    ЕМНИП, в доке как раз было написано, что насрали на PEP8 во имя подобия на жабу.
                    Ответить
                    • отвратительно!

                      что за нископоклонство перед жабой? Что за питонофобия?
                      Ответить
                  • Camel case в именах методов - это пережиток жавы (откуда и пришел юниттест, треды и кое-что еще) и официально забракован. В тройке его может и убрали.
                    Что касается наличия/отсутствия подчеркивания- тут по разному, но официально рекомендуется сишный стиль с подчеркиваниями.
                    Ответить
          • > under_score у встроенных функций php

            http://phpsadness.com/sad/4

            Первое правило PHP: никаких правил именования.
            Второе правило PHP: см. правило №1.
            Привыкайте.
            Ответить
          • Человек имел несчастье писать на пхп, и знает что даже среди "встроенных" там бывают разные стили, как можно видеть даже тут.

            Кроме того понятие "встроенности" весьма условно: все они живут в других модулях и либо линкуются к пыху статически, либо динамически.

            Код стайлу должно быть это все равно
            Ответить
          • За каким хуем мне может понадобиться отличать встроенные функции от пользовательских?
            Ответить
            • не знаю за каким, я думаю создатели пыха, тоже не знают :)
              Ответить
        • >>кэмел: urlEncoder
          >> индерскор: str_replace
          >> без андерскора rawurlencode
          Ответить
      • http://ideone.com/c0WNHi

        Для имени функции длиной N символов у пыхи есть 2 в степени N вариантов написания. Все варианты равнозначны, как в Паскале.
        Ответить
        • Ещё бы символ "_" игнорировался для полного счастья.
          Для имени с длиной N существовало бы 2^N * sum[k>=0; k+N < K] ((N+1)^k) * sgn(1+sgn(K-N)) вариантов записи не длинней некоторой разумной длины K.
          Ответить
    • http://php.net/manual/ru/function.gzgetss.php
      Ответить
      • Кентавры живы!

        P.S. Но самая нужная функция — gzpassthru.
        Ответить
        • А gzpassthrus забыли ;(
          Ответить
          • Смейтесь, смейтесь...
            Вот понадобится вам, например, сохранить первые 42 килобайта загзипованной строки, предварительно вырезав теги, в файл, а остаток вывести на экран как есть. В PHP это делается в 4 строки:
            if (($f = gzopen('somefile.gz', 'r') !== false) {
                file_put_contents('somefile.txt', gzgetss($f, 42 * 1024));
                gzpassthru($f);
                gzclose($f);
            }

            В каком еще языке что-то подобное можно сделать так просто? В PHP всё для людей, потому он и самый популярный.
            Ответить
            • Первая строчка есть в любом, дальше не знаю.
              Ответить
      • P.P.S.
        https://youtu.be/4wn3wcZvLGM
        Ответить

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