
Nikita
06.12.2017
14:29:27
Т.е. Вроде что-то делаю, с докой и гуглом вообще все что бизнес просит. Но дальше цепочки что ты написал не понимал

Sergey
06.12.2017
14:29:28
в целом рекомендую тогда попробовать написать свой контейнер зависимостей - он покрывает наверное 80% того что в этом флоу из "интересного"
там из того что не входит в это - роутинг, тут регулярки можно будет подтянуть)

Nikita
06.12.2017
14:29:59
Это следующий в списке задач пункт

Google

Sergey
06.12.2017
14:30:10
покажи список)

Nikita
06.12.2017
14:30:24
А роутинг без регепса уже писал)

Sergey
06.12.2017
14:30:33

Nikita
06.12.2017
14:30:37
Пса выгуляю скину)

Sergey
06.12.2017
14:31:06
ну просто если он у тебя без регуляро - есть вероятность что ты ничему не научился)
оно конечно не только за счет регулярок можно, много чего можно
префиксное дерево например
но не как в yii - /:controller/:action

Nikita
06.12.2017
14:31:53
Да никак, просто по урлу находил контроллер и экшен
Самый примитив

Sergey
06.12.2017
14:32:10
ясно, ну так чему ты научился?)

Nikita
06.12.2017
14:34:27
Что во первых магии в нем нет, а во вторых писать надо минимум с конфигом и нормальным диспетчером, ну и узнал про магию php вида (new $controller)->$action()

Google

Nikita
06.12.2017
14:34:41
Год назад дело было
Ну и научился перехватывать все запросы и перенаправлять куда мне нужно
Мелочь вроде, но хоть что-то
Сейчас год спустя велосипед новый пишу, пока больше вкурил в ди и узнал про гидроторы, прокси классы. И т.д.
На самом деле рост при написание фреймворка маленький , мне больше показал на слабые места

Sergey
06.12.2017
14:38:33

Nikita
06.12.2017
14:38:59
А-ля слабое понимание внутрянки php, слабое знание паттернов

Sergey
06.12.2017
14:39:01

Nikita
06.12.2017
14:39:02
Ну да
Диспетчер нужен
А, я ещё абстрактными классами наловчился пользоваться на первом фреймворке
Ну и про рефлекшон узнал
И попользовался
:D
Правда для херни, сделал класс константы которого можно форычем перебрать
И cli узнал
Так что смысл имеет, но лучше в интересную фирму на интересный проект.с ментором

Sergey
06.12.2017
14:44:56
и да - тесты

Nikita
06.12.2017
14:49:42
Вооот, я дошёл до трейтов и самодостаточных классах

Google

Nikita
06.12.2017
14:49:51
А вот с тестами беда
На работе тимлид их не хочет

Sergo
06.12.2017
14:50:40
о_О

Sergey
06.12.2017
14:50:44

Sergo
06.12.2017
14:50:50
тимлид не хочет, чтоб ты писал тесты?

Nikita
06.12.2017
14:50:52
Попробую на своём фреймворке, но слабо представляю как тестить

Олег
06.12.2017
14:51:08
Добрый вечер. А кто может сталкивался, laravelcollective/html при создании поля, например:
Form::hidden('methodName', 'saveItemKind')
перед тем как подставить значение saveItemKind, проверяет $this->request->input('methodName'). и если таковое не пустое, то подставляет именно его вместо 'saveItemKind'.

Sergey
06.12.2017
14:51:21

Nikita
06.12.2017
14:51:38
У нас блин команда из трёх программистов ) никто тесты не пишет

Sergey
06.12.2017
14:51:39

Nikita
06.12.2017
14:51:45
Вообще
И на прошлых работах та же беда

Sergey
06.12.2017
14:52:00
и тем более нет смысла писать тесты если ты будешь их один из трех писать. Ты забьешь тупо

Sergo
06.12.2017
14:52:14

Sergey
06.12.2017
14:52:15
НО! можно научиться а потом научить других)

Nikita
06.12.2017
14:52:24
«На тесты нет времени»

Sergey
06.12.2017
14:52:37

Sergo
06.12.2017
14:52:38

Nikita
06.12.2017
14:52:54
Баги есть, но мало

Google

Sergey
06.12.2017
14:53:01
ну тогда тесты не особо нужны)

Nikita
06.12.2017
14:53:29
Получается надежный код писать + я ревью заставил всех делать

Sergey
06.12.2017
14:53:45
а на это время есть)
ну как, на самом деле это проще

Nikita
06.12.2017
14:53:55
Хоть как-то от херни бережемся

Sergey
06.12.2017
14:54:19
тесты - надо реально по другому просто делать дела. это сложно и первое время будет очень медленно
и если команда вся не умеет в них - то обречено

Nikita
06.12.2017
14:54:44
Ну и дев сервер поднял который стягивает ветку develop и там все тестят
Вручную пм и пара ребят что в админке работают
Ну я это и понимаю и не понимаю. Чем раньше бы начали тем проще бы было, кодовая база маленькая была

Admin
ERROR: S client not available

Nikita
06.12.2017
14:56:21
А сейчас покрыть все тестами месяц займёт

Валерий
06.12.2017
14:56:45
читать AAA
а тесты в первую очередь писать для себя

Nikita
06.12.2017
14:57:50
Что читать? Оо

Валерий
06.12.2017
14:58:25
http://wiki.c2.com/?ArrangeActAssert

Nikita
06.12.2017
15:00:36
Благодарю
:) вот ещё что-то новое узнаю

Sergey
06.12.2017
15:13:52
еще добавлю

Google

Sergey
06.12.2017
15:14:21
https://gist.github.com/fesor/db60b4995880925b720be9c7cf75543f

Nikita
06.12.2017
15:26:04
Приду почитаю, самому пока видеться так, юнит тесты только на «сложные» участки кода, там где может вкрасться ошибка, например расчёт величины зависящий от 10 параметров по какой нибудь дикой формуле, а вот функциональные тесты должны покрывать все приложение

Vitaly
06.12.2017
15:53:05
Ребята привет, часто встречаю в чужих сорсах такое
/**
* @var \Ramsey\Uuid\Uuid
*/
private $id;
public function __construct()
{
$this->id = Uuid::uuid4();
}
Выглядит как нарушение инверсии зависимостей и я бы сделал так
/**
* @var \Ramsey\Uuid\UuidInterface
*/
private $id;
public function __construct(UuidInterface $uuid)
{
$this->id = $uuid;
}
Но почему тогда первый вариант конструктора так часто всречается в примерах, в том числе у авторитетных разработчиков(например у ocramius)?

Валерий
06.12.2017
15:55:29
Я так думаю, что в первом варианте - сущность

Vitaly
06.12.2017
15:55:42
Да, и во втором тоже.

Валерий
06.12.2017
15:56:06
да, но сущность с зависимостью... как ее сериализовывать/десериализовывать?
будет ли она валидной после десериализации, например? нет

Sergey
06.12.2017
15:57:27
десериализовывать сущности грешно

Валерий
06.12.2017
15:57:47
грешновато. но пример отличный

Vitaly
06.12.2017
15:58:13
Ну да, именованные конструкторы использовать.

Валерий
06.12.2017
16:00:32
вот в этом варианте, например, uuid используется как identity.
никто не мешает сделать у сущности бизнесовый статичный метод, подразумевающий создание новой сущности (например, ::register в случае , допустим, регистрации нового пользователя), а туда уже прокинуть конкретное значение id (в параметрах метода, да)
причем извне неважно, чем получен id (сиквенс, uuid)
правда, я бы тут id еще завернул в valueobject

Vitaly
06.12.2017
16:01:15
Зачем?

Валерий
06.12.2017
16:01:44
ну, допустим, id пользователя не может быть 0 и меньше
такой себе инвариант

Dmitry
06.12.2017
16:12:11
https://buildplease.com/pages/vo-ids/

Vitaly
06.12.2017
16:12:23
Ну вот я сейчас глянул. Доктрина не вызывает конструктор сущности и не рекоментует сериализовать сущности.
Значит через конструктор допустимо указывать зависимости

Валерий
06.12.2017
16:13:10

Vitaly
06.12.2017
16:13:14

Валерий
06.12.2017
16:14:36
а при выборке из репозитория у тебя как зависимости для сущности подтягиваться будут?
например