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

    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
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    /**
         * Sets the user in the token.
         *
         * The user can be a UserInterface instance, or an object implementing
         * a __toString method or the username as a regular string.
         *
         * @param string|object $user The user
         *
         * @throws \InvalidArgumentException
         */
        public function setUser($user)
        {
            if (!($user instanceof UserInterface || (is_object($user) && method_exists($user, '__toString')) || is_string($user))) {
                throw new \InvalidArgumentException('$user must be an instanceof UserInterface, an object implementing a __toString method, or a primitive string.');
            }
            if (null === $this->user) {
                $changed = false;
            } elseif ($this->user instanceof UserInterface) {
                if (!$user instanceof UserInterface) {
                    $changed = true;
                } else {
                    $changed = $this->hasUserChanged($user);
                }
            } elseif ($user instanceof UserInterface) {
                $changed = true;
            } else {
                $changed = (string) $this->user !== (string) $user;
            }
            if ($changed) {
                $this->setAuthenticated(false);
            }
            $this->user = $user;
        }

    https://github.com/symfony/security-core/blob/master/Authentication/Token/AbstractToken.php#L93

    Запостил: craaazy19, 26 Июля 2016

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

    • > throw new \InvalidArgumentException


      И да, это та самая симфония, которая призвана отбелить имя PHP?
      Ответить
      • А что ты предлагаешь делать если аргумент неправильного типа? Все верно сделано.
        Ответить
      • А на мой взгляд говно здесь в двух местах:
        1. Метод принимает аргумент $user нескольких типов, отсюда и каша. Хотя для пхп это норма.
        2. Запутанная логика определения статуса $changed. Причём в одном месте это делается вызовом $this->hasUserChanged($user), а в других — прямо тут на коленках.

        По идее определение статуса $changed можно было бы полностью делегировать какому-нибудь методу типа hasUserChanged.

        А так всё нормально.
        Ответить
        • > аргумент $user
          Оно потом ещё и хранит эту хуиту внутри. Там поди каждый метод потом проверяет, UserInterface ли это или просто строка...
          Ответить
          • $this->user = $user;


            Слона-то я и не заметил. Оно же сохраняет без преобразования, как есть.
            Ответить
    • http://govnokod.ru/20220#comment341301
      Ответить
    • http://govnokod.ru/20429#comment341302
      Ответить
    • http://govnokod.ru/20429#comment341303
      Ответить
    • http://govnokod.ru/20429#comment341304
      Ответить
    • http://govnokod.ru/20429#comment341305
      Ответить
    • http://govnokod.ru/20429#comment341306
      Ответить
    • http://govnokod.ru/20429#comment341307
      Ответить
    • http://govnokod.ru/20429#comment341308
      Ответить
    • http://govnokod.ru/20429#comment341309
      Ответить
    • http://govnokod.ru/20429#comment341310
      Ответить
    • Иканус или 1023, где вы? Кто тут утверждал что это невозможно (это не я делал)?
      Ответить
      • К
        http://govnokod.ru/20429#comment341320
        http://govnokod.ru/20429#comment341321
        http://govnokod.ru/20429#comment341322
        http://govnokod.ru/20429#comment341323
        Ответить
      • О
        http://govnokod.ru/20429#comment341319
        http://govnokod.ru/20429#comment341321
        http://govnokod.ru/20429#comment341322
        http://govnokod.ru/20429#comment341323
        Ответить
      • М
        http://govnokod.ru/20429#comment341319
        http://govnokod.ru/20429#comment341320
        http://govnokod.ru/20429#comment341322
        http://govnokod.ru/20429#comment341323
        Ответить
        • Ну всё, блять. Мне нужна твоя одежда и мотоцикл.
          Ответить
      • Никто не утверждал, что это невозможно. 3_14dar, там всё написано было, 3_14dar. Конечно, не влезло в одно SMS с кириллицей, но и не 2К как у wvxvw.

        Инканус говорил о возможности слошарить из-за гонок. Нельзя атомарно получить ID и запостить его.
        Я говорил вообще о говнокодах и общем случае, который на практике проявляется при активной работе минусующих ботов, вайпающих школьников и удаляющего Страйкера.
        Никто в здравом уме не утверждал, что в частном случае, когда условия хорошие, невозможно.
        Ответить
        • "когда условия хорошие" - они хорошие 99,99% времени.
          Ответить
        • Слушай, подари мне такой генератор на день рождения? А?
          Оно у меня завтра, если что.
          Заранее спасибо, пожалуйста.
          PS. Если что, я назову его "Генератор Кличко". Ну или "Черномырдин". Подумаю ещё.
          Ответить
          • Генератор аппаратный, поэтому полное копирование затруднено, обычно составляет 10-30 лет. Но могу подарить доброй и красивой девушке.

            P.S. А какие генереции больше всего понравились?
            Ответить
      • >> это не я делал

        пмххх лол
        Ответить
    • ███████                                                                                                                         
      ██   ██                                                                                                                         
      ██   ██                                                                                                                         
      ██   ██  █████     ████ ██   ██ ██████  █████  ██████  ████        ██   ██  █████       ██   ██ ██   ██ ██ █ ██ ██   ██  ████   
      ██   ██ ██   ██   ██ ██ ██   ██ █ ██ █ ██   ██ █ ██ █     ██       ██   ██ ██   ██      ██   ██ ██   ██ ██ █ ██ ██   ██     ██  
      ██   ██ ██   ██  ██  ██ ██  ███   ██   ██   ██   ██    █████       ██   ██ ██   ██      ██   ██ ██   ██  █ █ █  ██   ██  █████  
      ██   ██ ██   ██  ██  ██ ██ █ ██   ██   ██   ██   ██   ██  ██       ███████ ███████      ███████ ██   ██  █████  ███████ ██  ██  
      ██   ██ ██   ██  ██  ██ ███  ██   ██   ██   ██   ██   ██  ██       ██   ██ ██           ██   ██ ██   ██  █ █ █  ██   ██ ██  ██  
      ██   ██ ██   ██  ██  ██ ██   ██   ██   ██   ██   ██   ██  ██       ██   ██ ██   ██      ██   ██  ██████ ██ █ ██ ██   ██ ██  ██  
      ██   ██  █████  ███  ██ ██   ██  ████   █████   ████   ███ ██      ██   ██  █████       ██   ██      ██ ██ █ ██ ██   ██  ███ ██ 
                                                                                                           ██                         
                                                                                                      ██   ██                         
                                                                                                       █████
      Ответить
    • ███████                                                                                                                         
      ██   ██                                                                                                                         
      ██   ██                                                                                                                         
      ██   ██  █████     ████ ██   ██ ██████  █████  ██████  ████        ██   ██  █████       ██   ██ ██   ██ ██ █ ██ ██   ██  ████   
      ██   ██ ██   ██   ██ ██ ██   ██ █ ██ █ ██   ██ █ ██ █     ██       ██   ██ ██   ██      ██   ██ ██   ██ ██ █ ██ ██   ██     ██  
      ██   ██ ██   ██  ██  ██ ██  ███   ██   ██   ██   ██    █████       ██   ██ ██   ██      ██   ██ ██   ██  █ █ █  ██   ██  █████  
      ██   ██ ██   ██  ██  ██ ██ █ ██   ██   ██   ██   ██   ██  ██       ███████ ███████      ███████ ██   ██  █████  ███████ ██  ██  
      ██   ██ ██   ██  ██  ██ ███  ██   ██   ██   ██   ██   ██  ██       ██   ██ ██           ██   ██ ██   ██  █ █ █  ██   ██ ██  ██  
      ██   ██ ██   ██  ██  ██ ██   ██   ██   ██   ██   ██   ██  ██       ██   ██ ██   ██      ██   ██  ██████ ██ █ ██ ██   ██ ██  ██  
      ██   ██  █████  ███  ██ ██   ██  ████   █████   ████   ███ ██      ██   ██  █████       ██   ██      ██ ██ █ ██ ██   ██  ███ ██ 
                                                                                                           ██                         
                                                                                                      ██   ██                         
                                                                                                       █████
      Ответить

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