- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 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
SUDDENLY_interrupt 26.07.2016 15:29 # 0
И да, это та самая симфония, которая призвана отбелить имя PHP?
guest 26.07.2016 17:49 # +3
inkanus-gray 29.07.2016 14:40 # +1
1. Метод принимает аргумент $user нескольких типов, отсюда и каша. Хотя для пхп это норма.
2. Запутанная логика определения статуса $changed. Причём в одном месте это делается вызовом $this->hasUserChanged($user), а в других — прямо тут на коленках.
По идее определение статуса $changed можно было бы полностью делегировать какому-нибудь методу типа hasUserChanged.
А так всё нормально.
bormand 30.07.2016 07:33 # +2
Оно потом ещё и хранит эту хуиту внутри. Там поди каждый метод потом проверяет, UserInterface ли это или просто строка...
inkanus-gray 30.07.2016 09:38 # +1
Слона-то я и не заметил. Оно же сохраняет без преобразования, как есть.
guest 26.07.2016 20:00 # +5
guest 26.07.2016 20:00 # +5
guest 26.07.2016 20:01 # +5
guest 26.07.2016 20:01 # +5
guest 26.07.2016 20:01 # +5
guest 26.07.2016 20:01 # +5
guest 26.07.2016 20:01 # +5
guest 26.07.2016 20:02 # +5
guest 26.07.2016 20:02 # +5
guest 26.07.2016 20:02 # +5
3_14dar 26.07.2016 21:45 # +2
guest 26.07.2016 21:55 # +1
http://govnokod.ru/20429#comment341320
http://govnokod.ru/20429#comment341321
http://govnokod.ru/20429#comment341322
http://govnokod.ru/20429#comment341323
guest 26.07.2016 21:56 # +1
http://govnokod.ru/20429#comment341319
http://govnokod.ru/20429#comment341321
http://govnokod.ru/20429#comment341322
http://govnokod.ru/20429#comment341323
guest 26.07.2016 21:57 # +1
http://govnokod.ru/20429#comment341319
http://govnokod.ru/20429#comment341320
http://govnokod.ru/20429#comment341322
http://govnokod.ru/20429#comment341323
bot 26.07.2016 22:55 # +2
1024-- 27.07.2016 16:18 # +5
Инканус говорил о возможности слошарить из-за гонок. Нельзя атомарно получить ID и запостить его.
Я говорил вообще о говнокодах и общем случае, который на практике проявляется при активной работе минусующих ботов, вайпающих школьников и удаляющего Страйкера.
Никто в здравом уме не утверждал, что в частном случае, когда условия хорошие, невозможно.
3_14dar 27.07.2016 23:01 # 0
bot 29.07.2016 02:43 # 0
Оно у меня завтра, если что.
Заранее спасибо, пожалуйста.
PS. Если что, я назову его "Генератор Кличко". Ну или "Черномырдин". Подумаю ещё.
1024-- 29.07.2016 05:31 # +5
P.S. А какие генереции больше всего понравились?
kegdan 29.07.2016 12:37 # 0
kegdan 29.07.2016 12:37 # +1
пмххх лол
TEPAnEBT 26.07.2016 22:59 # −4
TEPAnEBT 26.07.2016 22:59 # −4