
Sergey
23.07.2018
08:15:00
вот только в этом случае такое ограничение приведет к тому что по одной причине надо будет трогать больше файлов)
занятно что если классы объявляются без нэймспейса то тебе не обязательно соблюдать PSR-0/PSR04
ну то есть в целом достаточно предложить новый стандаррт автозагрузки (который фолбэчит до имя нэймспейса -> имя файла) и тогда вообще можно будет волшебные вещи делать

Google

Denis
23.07.2018
08:23:35

Sergey
23.07.2018
08:28:08
поскольку composer умеет строить кэш - оверхэд незначительный
а если в php8 сделают prefetch кода то вообще изи бризи. Сегодня можно просто инклудить все файлы в src директории например и все будет работать. Если у тебя соблюдается правило что объявление символов (классы и функции) и сайд эффекты (обработка запроса, вывод в консоль) в разных файлах, что собственно сейчас дефолт

Denis
23.07.2018
08:36:56
весь нюанс в слове "если")

Sergey
23.07.2018
08:37:11

Maksim
23.07.2018
08:37:46
вспомним молодсть, времена зф1) будем собирать 1 монстрофайлик :)

Evgeniy
23.07.2018
11:28:00
кстате никто с doctrine/annotation 1.6 не регал кастомные анотации ?
в версии 2.0 будут масштабные изменения, а в версии 1.6 регать все через AnnotationRegistry есть ли какой способ чтобы работало и версии 1.6 и в 2.0 ?

Dmitry
23.07.2018
11:49:36
Нужны идеи :) Есть легаси http апи, нужно как-то документировать. Как бы это сделать так, что бы исключить расхождение кода и апи? Вижу пока какой-то продукт с валидатором и сажать в каждый метод его вызов

militska
23.07.2018
11:55:29
вот этв штука норм. обычно если правишь код, правишь каменты заодно
http://apidocjs.com/

Dmitry
23.07.2018
12:06:04
не вижу возможности валидировать тут... и свои типы хотелось бы описывать

Sergey
23.07.2018
12:06:24
у тебя не много вариантов

Google

Sergey
23.07.2018
12:06:39
а там дальше raml, api blueprint, swagger
json schema то есть

Dmitry
23.07.2018
12:07:10
ну мне скорее продукт нужен, который даст более-менее из коробки валидировать входные данные

Sergey
23.07.2018
12:07:34

Dmitry
23.07.2018
12:08:51
наоборот, описать руками и потом на основе этой схемы валидировать массив данных, что бы если не внес параметр в апи - не смог его увидеть в коде
как иначе избежать рассинхронизации я не вижу...

dypa
23.07.2018
12:25:11

Dmitry
23.07.2018
12:34:15
а что он позволяет сделать? ну про описание понятно, что потом на php можно сделать с его описанием посредством его sdk?
т.е. я понимаю, что он может стабы сгенерить по апи, но мне они в общем не очень помогут... я уж скорее все же наделаю DTO, обвешу jms + nelmo и усе

Maksim
23.07.2018
12:37:37
вся разница в том, где ты схему описываешь и как её визуализируешь) в сваггере это тёплый ламповый jsonчик, в нелмио аннотации)

Dmitry
23.07.2018
12:38:26
ну главное что он анотации читает те же, что и jms, идея как бы в этом
т.е. пусть будет json, но нужен тогда десериалайзер или хотя бы валидатор... хотя конечно идея генерации апи по коду мне больше нравится

Maksim
23.07.2018
12:42:03
ну у меня аннотации не прижились. Человеки постоянно забывали менять аннотации :(
у тебя есть экшончек и портянка на 2 листинга с описанием. Чёт такое себе) пугающе выглядит

Dmitry
23.07.2018
12:42:47
ну не поменял анотацию - не получил нужный тип данных в DTO...
у тебя видимо много всего на вход шло, а не запакованное в одно DTO?

Maksim
23.07.2018
12:44:39
дтошка в дтошке)

Dmitry
23.07.2018
12:44:57
так откуда портянка то

Maksim
23.07.2018
12:46:00
полное описание кодов ответов, групп, тегов и т.д.

Google

militska
23.07.2018
12:50:26
зато народ не забывает поправить

Dmitry
23.07.2018
12:51:20
а, ясно... ну да в общем, но воспринимай этот контроллер как часть документации, а не кода :) пусть он просто проксирует все экшены в реальный контроллер... ооо... идея

Maksim
23.07.2018
12:51:56
я и так под анализатор код пишу) не хватало ещё опуститься на столько, что бы под документирование код писать...)

militska
23.07.2018
12:52:39
а что за анализатор?

Evgeniy
23.07.2018
12:55:23
а если на основе "документации" генерировать тесты которые говорят актуальна ли твоя "документация" и соответствует ли поведение кода, той документации, по такому принципу они все вроде работают
просто какие то тулзы параметры из json,yml берут, а какие то из анотаций
и уже когда документация корректно поверх нее генерировать пользовательскую доку

Maksim
23.07.2018
13:00:36

Sergey
23.07.2018
14:13:38
"генериться тесты" - это проигрышь. Ну мол, если у тебя достаточно инфы для генерации тестов значит ты можешь просто статически убедиться что у тебя на уровне типов все ок
что логичнее и явно удобнее
я сколько не пытался родить что-то что бы не писать тесты апи больше убедился что тесты api в целом либо бесполезны либо это надо делать по другому (json schema руками описанная или сгенеренная а тесты руками и желательно что бы это была просто валидация респонсов в контексте e2e а не тупо тесты api - так покрытие больше)


Evgeniy
23.07.2018
14:19:24
ну тут вопрос в том что код одно возвращает, а ручное описание в анотации или json говорит что будет по другому
соответственно чтобы не было расхождений надо проверить то что написано в доке а это генерить тест
другой вариант на основе теста генерить доку - но такова я не видел нигде
условно есть 3 вещи
1. Реализация
2. Документация
3. Тесты что документация соответсвует реализации
мы хотим меньше писать и один из этих пунктов генерировать (ну кроме реализации надеюсь понятно)
получается мы либо на основе реализации и ее анотаций создаем доку и проверяем реализацию тестами или на основе тестов доку и тестами проверяем реализацию, ну я пока с набега как то так вижу и кому то удобней одно кому то другому
в случае если документация без тестов висит как .... в проруби, то это лишь вопрос времени когда на ее актуализацию забьют и не будут поддерживать - имхо мб есть абстрактные парни которые так не делают


Roman
23.07.2018
14:49:17
Привет) Подскажите хорошее чтиво по логгированию, пожалуйста, если таково есть.
Проект еще в разработке. Но решили вводить логгирование, хотя бы для дебага. Опыта с логированием нету.
Обычной записи в файлик всего подряд не хочется)

Evgeniy
23.07.2018
14:49:48
psr/logger -> monolog

Bohdan
23.07.2018
14:50:32
elk/graylog - перегруз имхо
я вообще находил какие-то ui для логов монолога и даже пробовал запустить - но они устарели там

Roman
23.07.2018
14:53:13
psr/logger -> monolog
Мне бы больше про архитектуру или "бест практис" в плане логгирования)
За стандарты и монолог знаю)
Может кто-то даст совет по собственному опыту)

Evgeniy
23.07.2018
14:54:52
ну зависит от приложения и важности
в catch добавляй логирование исключений
был опыт по настройке отправки некоторых событий на email

Google

Roman
23.07.2018
14:55:46
Логировать в контроллере? исключения, например

Evgeniy
23.07.2018
14:55:50
а потом чеовек уволился уведомления слалилсь но ему на почту, поэтому их надо еще и читать
еще используй ротацию логов - но это совсем капитанство

Roman
23.07.2018
14:57:46

Admin
ERROR: S client not available

Evgeniy
23.07.2018
14:57:49
еще надо подключать мониторинг чтобы логи не загружали сервера и место не заканчивалось особенно если пишутся прямо на том же сервере где и прод

militska
23.07.2018
14:57:54
Логирую все общение ч внешней системой, что отправила, что получила.
Все, ошибки, исключения.
В критичных моментах, то что хочу записать в бд

Maksim
23.07.2018
14:58:24
пишу всё подряд в stdout и счастлив :)

Evgeniy
23.07.2018
14:58:36
ну да хорошая практика Guzzle client логировать и всякие soap клиенты

militska
23.07.2018
14:58:48
Иногда цепочки вызовов функций логирую
Чтобы прям вообще было понятно что происходит

Evgeniy
23.07.2018
14:59:00

Roman
23.07.2018
14:59:12

Evgeniy
23.07.2018
14:59:30
а потом бац туда куда пишиши логи закончилось там место
много логов или дебил какой в debug перевел запись логов
и забыл переставить назад
и соответственно места нет могут быть ошибки или долгая запись и тормаза на проде

militska
23.07.2018
15:00:27
stack trace ?
Что и с какими параметрами вызывала. К примеру чтобы по ид заявки, можно было видеть что с ней происходило

Google

militska
23.07.2018
15:03:04

Sergey
23.07.2018
15:03:40

Roman
23.07.2018
15:03:42
обширная тема конечно

Sergey
23.07.2018
15:04:17

militska
23.07.2018
15:04:45
Я через рефлексии как-то хотела написать автоматический генератор для доков апи
Но в итоге решили взять готовое и не мучиться

Roman
23.07.2018
15:19:55

Artem
23.07.2018
15:24:43
а вот кстати такой нубский вопрос про тестирование апи.
Тестируется ли изменение стейта приложения при запросах к апи или только респонс?
Например добавление яблок в коробку - вернулось что-то позитивное, типа 200, но яблоки в БД в реальности не добавились. Если тестировать стейт приложения - тогда ошибка будет найдена, если нет - тогда не будет.
Хотя можно наверное стейт отдельно тестировать, на уровне application service =\

Maksim
23.07.2018
15:27:09
если яблоки не были добавлены, а апи вернуло 200, значит код чем-то дурным пахнет. Не нужно тестировать базу данных. Если сказано "положить" и данные корректны, она схоронит.

Roman
23.07.2018
15:29:30

Roma
23.07.2018
15:31:46

Artem
23.07.2018
15:32:02

Maksim
23.07.2018
15:32:43

Artem
23.07.2018
15:33:25

Maksim
23.07.2018
15:33:42

Artem
23.07.2018
15:34:31
А ещё... А ещё... Можно проверять не изменилось ли состояние остальной части БД после определённой операции, ведь тут тоже может быть ошибка, oh wait! :D