
Maksim
11.05.2018
08:50:49
вполне в тему
да не особо)
но, тем не менее, почему он там в тему?)

Andrew
11.05.2018
08:51:11
У меня IDE выкидывать ошибку будет в методе конструктора
если там более 3-х методов
вернее варнинг

Google

Maksim
11.05.2018
08:51:35
это единственная причина по котором там такой объект?)

Andrew
11.05.2018
08:51:43
угу

Maksim
11.05.2018
08:51:57
а если этот объект можно разбить на несколько логических?)

Alexander
11.05.2018
08:52:29
а зачем пользователю сразу передавать activationToken?
он нужен в сущности?

Maksim
11.05.2018
08:53:02
в общем, хер меня Фессор убедит, что он там в тему)
просто запихнули, что бы было одним параметром и всё)

Alexander
11.05.2018
08:53:15

Sergey
11.05.2018
08:53:56

Maksim
11.05.2018
08:54:16

Alexander
11.05.2018
08:54:38
и activationToken должен в другом месте создаваться и отправлять пользователю, класс User с этим не должен быть связан почти никак (от User там только идентификатор и email нужен)

Maksim
11.05.2018
08:55:53
да и при регистрации changePassword чёт как-то не звучит

Andrew
11.05.2018
08:56:20
он инициализируется по дефолту как Null
поетому мы его change

Google

Maksim
11.05.2018
08:56:43
у тебя при создании нет пароля) ты ничто меняешь на что-то)

Alexander
11.05.2018
08:56:45
а зачем ты его передаешь тогда в дто?

Maksim
11.05.2018
08:57:23

Andrew
11.05.2018
08:57:34
нет, при создании любой сущности надо инициализировать все параметры
ибо тогда будет невалидное состояние
Поле не должно быть null
а VO
и там уже null

Alexander
11.05.2018
08:58:26
ну так передавай сразу не нулл, а то, что передаешь в change

Valentin
11.05.2018
08:58:30
Это гениально)

Alexander
11.05.2018
08:58:56
а то пока херь какая-то получается: ты создаешь объект с невалидным состоянием и потом его меняешь)

Maksim
11.05.2018
08:59:03

Andrew
11.05.2018
08:59:28
угу
енкодер нужен
делал по гайдам симфони
и примерам с гитхаба

Maksim
11.05.2018
09:00:00
ну тут register реально на себя дохера берёт)

Andrew
11.05.2018
09:00:20
так для етого ето ж и Factory

Alexander
11.05.2018
09:00:22
public function register(array $data) : User
{
$salt = base64_encode(random_bytes(55));
$activationToken = preg_replace('/\//', '', base64_encode(random_bytes(55)));
$slug = $this->stringHelper->transliterate($this->stringHelper->slug($data['nickname']));
$encodedPass = $this->encoderFactory->getEncoder($newUser)->encodePassword(
$newUser->plainPassword()->plainPassword(),
$newUser->salt()->salt()
);
$newUser = new User(
$data['nickname'],
$slug,
$data['email'],
new UserPassword($encodedPass),
$salt,
$activationToken
// TODO - add here default user UserRole
);
//dump($newUser);
//exit;
$newUser->eraseCredentials(); // я не знаю че делает этот метод, потому оставлю его здесь
return $newUser;
}

Andrew
11.05.2018
09:00:39
?

Google

Alexander
11.05.2018
09:00:48
ну и вот уже не нужно вызывать change

Andrew
11.05.2018
09:00:51
$newUser->eraseCredentials();

Maksim
11.05.2018
09:00:56
> // я не знаю че делает этот метод, потому оставлю его здесь
удаляет plain данные

Andrew
11.05.2018
09:00:56
чистит пароль
доки симфы
да
причем он идет в интерфейсе из пакета Сукурити

Alexander
11.05.2018
09:01:21
я на симфони не пишу

Andrew
11.05.2018
09:01:26
я бы использоватл changePassword метод

Alexander
11.05.2018
09:01:35
и доки симфони не видел не разу
только компоненты отдельные

Maksim
11.05.2018
09:01:45

Andrew
11.05.2018
09:01:51
ну, там много прилетаел лишнего с этим пакетом

Alexander
11.05.2018
09:02:12
футакимбыть)
да не, мне норм: в галере где работаю еще, симфонией не принято пользоваться

Maksim
11.05.2018
09:02:45


Alexander
11.05.2018
09:03:25
но возвращаясь к коду: вызывать changePassword при создании юзверя — изврат еще тот
остально хз зачем мне нужно
public function register(array $data) : User
{
$salt = base64_encode(random_bytes(55));
$slug = $this->stringHelper->transliterate($this->stringHelper->slug($data['nickname']));
$encodedPass = $this->encoderFactory->getEncoder($newUser)->encodePassword(
$data['password'],
$salt
);
$newUser = new User(
$data['nickname'],
$slug,
$data['email'],
new UserPassword($encodedPass),
// TODO - add here default user UserRole
);
//dump($newUser);
//exit;
$newUser->eraseCredentials(); // я не знаю и знать не хочу че делает этот метод, потому оставлю его здесь
return $newUser;
}
скорее даже вот так: активацией должен другой сервис заниматься, который принимает нужные ему данные о пользователе, а не класс пользователя
а то тут какая-то мощная фабрика получается: она и экземпляр пользователя создает, и знает как токен активации придумать, жаль не отсасывает только

Google

Sergey
11.05.2018
09:30:36


Valentin
11.05.2018
09:39:34
public function register(array $data) : User
{
$salt = base64_encode(random_bytes(55));
$slug = $this->stringHelper->transliterate($this->stringHelper->slug($data['nickname']));
$encodedPass = $this->encoderFactory->getEncoder($newUser)->encodePassword(
$data['password'],
$salt
);
$newUser = new User(
$data['nickname'],
$slug,
$data['email'],
new UserPassword($encodedPass),
// TODO - add here default user UserRole
);
//dump($newUser);
//exit;
$newUser->eraseCredentials(); // я не знаю и знать не хочу че делает этот метод, потому оставлю его здесь
return $newUser;
}
скорее даже вот так: активацией должен другой сервис заниматься, который принимает нужные ему данные о пользователе, а не класс пользователя
Мне кажется генерацию слуга надо в конструктор Юзера вынести, это как уникальный идентификатор, за него должна отвечать сама сущность (так же как и uuid например генерируют в конструкторах)

Alexander
11.05.2018
09:44:48

Sergey
11.05.2018
09:46:16
ну и слагу в целом нечего делать внутри пользователя
я бы это в отдельную вообще сущность выносил
хотя я это я, у меня вообще философия намного более радикальна в этом плане

Alexander
11.05.2018
09:49:36
суть остается той же: здесь много того, чем НЕ должна заниматься фабрика

Sergey
11.05.2018
09:50:17
фабрика инкапсулирует в себе все то что требуется для создания чего-то. Что бы предоставить максимально легкий фасад и спрятать все зависимости

Admin
ERROR: S client not available

Sergey
11.05.2018
09:51:04
тот вопрос что то что мы создаем это пачка данных связанных между собой только фактом того что "это про юзера" - это абсолютной другой вопрос
который может привести к тому что нам и фабрика отдельная не понадобится.
(хотя по хорошему все сущности должны пораждаться другими сущностями, то есть фабрика нужна всегда, просто это может быть не просто специализированный сервис-фабрика))
например "контроллеры" - так себе фабрика)

Alexander
11.05.2018
09:52:54
смотря насколько широко глянуть на понятие фабрики)
контроллер можно обозвать фабрикой для Response =D

Sergey
11.05.2018
09:54:09
ммм в целом можно, но смысла в этом мало

Alexander
11.05.2018
09:56:19
ну мой взгляд на фабрику такой: она должна взять набор готовых данных и вернуть объект, а заниматься созданием новых данных она не должна. всякие Uuid, Token, Slug и т.д. — это лишнее
да и в целом, я отношусь к фабрикам, как к способу легкого переопределения экземпляра класса, который будет использоваться, к способу уменьшить связность кода

Google

Alexander
11.05.2018
09:59:29
Подскажите в PHPStorm горячие клавиши, для того чтобы, находясь в окне с содержимым файла, меня перекинуло в окно дерева файлов проекта, но уже в ту папку, в которой находится просматриваемый файл. Есть такое вообще?
К примеру я смотрю файл /web/index.php. А в дереве файлов проекта у меня открыто /vendor/blabla/blablabla/. Я хочу чтобы я нажал кнопочку, и в окне с деревом файлов проекта, меня перекинуло на /web/

Konstantin
11.05.2018
10:04:02

Alexander
11.05.2018
10:04:27
Спасибо добрый человек

Oleg
11.05.2018
10:04:33
или в настройках панели autoscroll from source

Sergey
11.05.2018
10:04:51
короч ладно, делай что хочешь и как хочешь) не мне тебя учить)

Alexander
11.05.2018
10:05:24
у меня раскладка нетбинсовская, потому комбинации различаться будут

Alexander
11.05.2018
10:09:05
А как сделать ее нетбиновской?

Alexander
11.05.2018
10:09:48

Alexander
11.05.2018
10:10:28
спасибо

Alexander
11.05.2018
10:11:04
у меня просто синдром утенка, первой IDE был Netbeans, потому и клавиши оттуда использую, к клавишам от IDEA привыкнуть пока не могу
вроде бы и чатик как раз для подобных целей придуман)

Olexandr
11.05.2018
10:23:30
посоветуйте где можно подробно почитать про принципы програмирования на пхп, ну и про самые распространненые практики

Vitaly
11.05.2018
10:27:34

Olexandr
11.05.2018
10:28:35
спасибо)

Maksim
11.05.2018
10:37:44

Борис
11.05.2018
13:07:38
Парни, в php7 ввели default функционал callSOmeFunction(default) ? или мне приснилось

Maksim
11.05.2018
13:08:04