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

    0

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    public static function copyImage($params)
    {
    ...
            if (!UploadImage::getOrder($barcode, $num)) {
                $num++;
                return self::copyImage($filename, $code, $ext, $sync, $user_id, $num); //тут ебаная рекурсия
            }
    ...
        public static function getOrder($barcode, $num = 0)
        {
            if (Images::findOne(['order' => $num, 'barcode' => $barcode])){
                return false;
            }
            return true;
        }
    
    вся эта рекурсия вместо простого...
    
        public static function getOrder($barcode, $num = 0)
        {
            if (Images::findOne(['order' => $num, 'barcode' => $barcode])){
                self::getOrder($barcode, $num + 1);
            }
            return $num;
        }

    просто убейте меня...

    Запостил: dasauser, 21 Января 2019

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

    • я еблан
      Ответить
    • Правильно, нахуй императивщину, Роман завещал писать функциональненько!
      Переводи на «Хаскель».
      Ответить
      • Можно и на «PHP» написать функцию, которая возвращает замыкание, итератор или генератор.
        Ответить
        • > замыкание, итератор или генератор.
          А Хуйвгонве говорил что он за пхп именно по причине отсутствия там всего этого
          Ответить
          • Может быть, он имел в виду PHP4 или PHP3?
            Ответить
            • PHP/FI

              https://www.google.com/search?q=замыкание+site%3Aphpclub.ru
              Ответить
              • Примерно половина вопросов по ссылке относится к «JS», а не к «PHP».
                Ответить
              • Итераторы появились как минимум с самого начала линейки PHP5. Как было в PHP4, не знаю, там работа с объектами немного отличалась.

                Замыканий не было в PHP 5.2. Они появились 10 лет назад.

                Генераторов не было в PHP 5.4. Они появились 5 лет назад.

                Анонимные классы (которые можно возвращать как лямбду) появились в PHP 7.

                Даже безо всего этого в «PHP» можно генерировать код на лету и скармливать его функции eval.

                Плюс из коробки функции array_map, array_reduce (которые могут пробегать не только по настоящим массивам, но и по классам, реализующим интерфейс итератора; до появления замыканий они в качестве обработчика принимали имена функций) –— вот это всё.
                Ответить
                • > Даже безо всего этого в «PHP» можно генерировать код на лету и скармливать его функции eval.

                  А еще можно написать на «PHP» компилятор из 〈Haskell〉 в «PHP» и потом вызывать в "компилтайме" (кодогенерация) этот компилятор. Или даже в рантайме, генерируя код налету и сразу же его исполняя через eval
                  Ответить
                  • >> А еще можно написать на «PHP» компилятор из 〈Haskell〉

                    Теоретически можно всё. Да кто ж его напишет, да чтобы ещё и без багов?
                    Ответить
    • блядб, я еще и забыл return self::getorder, почему я такой конч...
      Ответить
    • ☢☢☢
      Ответить

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