"PHP" / Говнокод #25318 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 dasauser, (Updated )

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

  • Правильно, нахуй императивщину, Роман завещал писать функциональненько!
    Переводи на «Хаскель».
    Ответить
    • Можно и на «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, почему я такой конч...
    Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8