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

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    public static function findById($id)
        {
            $model = self::where('id', $id)->get();
    
            $count = $model->getIterator()->count();
            if($count > 0) {
                return $model->getIterator()->current();
            }
    
            return false;
        }

    Laravel Eloquent Model

    Запостил: pb92, 11 Октября 2018

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

    • Ничего не понял. Поэтому я против классов, фреймворков и ООП.
      Ответить
      • Смотри лучше какой фильм, как раз про тебя

        Сумасшедший фермер бегает по ферме голый и насилует свинью. Иногда он часами смотрит, как совокупляются куры, катает по ферме колесо и просто радуется жизни. Когда свинья родила от фермера поросят, он начинает ревновать их отцовской ревностью к матери и в конце концов вешает всех. После этого показывает мертвых поросят свинье и убивает её, а потом закапывает себя в землю вместе с возлюбленной…


        https://www.kinopoisk.ru/film/134529/
        Ответить
    • Ох пых ты мой пых.

      Итератор не должен иметь count(), иначе зачем он итератор, а не сразу массив?
      Или этот божетсвенный ORM по count() сделает SELECT count(*) а по current() сделает SELECT *?
      Ну тогда это полный лол конечно.

      А вообще надо выделить "$model->getIterator()", и применить рефакторинг "extract variable" (CTRL+ALT+v в PHPStorm)
      Ответить
      • Ничего не понял. Про фермера куда понятнее.

        $iterator = $model->getIterator();
        if($iterator->count() > 0) {
                    return $iterator->current();
        }

        Вот так что ли?
        Ответить
        • ну так чуточку лучше, но всё равно говно
          Ответить
          • Стоп! А нахрен явно вызывать getIterator? Если это метод интерфейса IteratorAggregate, то объектом сразу можно пользоваться как массивом:
            if(count($model) > 0) {
                return current($model);
            }


            http://php.net/manual/ru/class.iteratoraggregate.php
            http://php.net/manual/ru/class.iterator.php
            http://php.net/manual/ru/class.traversable.php

            P.S. Тут есть замечание, что стандартные функции типа current не будут работать в пейсбуковской HHVM:
            http://php.net/manual/ru/function.current.php
            Ответить
      • Кстати, вот тут перечислены стандартные пыховские итераторы:
        http://php.net/manual/ru/spl.iterators.php

        Зачем-то есть даже IteratorIterator.
        Ответить

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