@prophp7

Страница 1191 из 1387
Sergey
23.07.2018
08:15:00
оно проецируется и на приложени в целом, если сильно упороться и задаться желанием)
ну я к тому что SOLID спокойно можно применять как на уровне проекта/подсистемы так на уровне отдельных функций, не то что файлов (которые в целом в php воспринимать как модуль вполне можно). Идея ж в том что бы каскад изменений уменьшить) а это проще на файлах)

вот только в этом случае такое ограничение приведет к тому что по одной причине надо будет трогать больше файлов)

занятно что если классы объявляются без нэймспейса то тебе не обязательно соблюдать PSR-0/PSR04

ну то есть в целом достаточно предложить новый стандаррт автозагрузки (который фолбэчит до имя нэймспейса -> имя файла) и тогда вообще можно будет волшебные вещи делать

Google
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
весь нюанс в слове "если")
не особо, есть opcache

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
не вижу возможности валидировать тут... и свои типы хотелось бы описывать

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
наоборот, описать руками и потом на основе этой схемы валидировать массив данных, что бы если не внес параметр в апи - не смог его увидеть в коде

как иначе избежать рассинхронизации я не вижу...

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: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
ну тут вопрос в том что код одно возвращает, а ручное описание в анотации или json говорит что будет по другому соответственно чтобы не было расхождений надо проверить то что написано в доке а это генерить тест другой вариант на основе теста генерить доку - но такова я не видел нигде
ну тут анализаторы типа psalm чуть-чуть погут помочь если подрастут. Они типа удостоверяться что типы в аннотациях и в коде совпадают. дальше уже можно будет проверять по типам соответствие схеме или вообще эту схему генерить, но естественно это будет не так гибко и не так надежно на данном уровне развития

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

Sergey
23.07.2018
15:04:17
Логировать в контроллере? исключения, например
обычно в листенерах по kernel.exception

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

Но в итоге решили взять готовое и не мучиться

Roman
23.07.2018
15:19:55
обычно в листенерах по kernel.exception
А в них уже проверять тип исключения? Ну я имею в виду листенеры, которые заточены под определенные виды исключений

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

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

Roma
23.07.2018
15:31:46
если яблоки не были добавлены, а апи вернуло 200, значит код чем-то дурным пахнет. Не нужно тестировать базу данных. Если сказано "положить" и данные корректны, она схоронит.
А что если была ситуация когда разработчик при сличение веток затер метод flush()? Все исполнялось коректно, но апишка не сохраняла сущность, хотя в респонсе приходил 200 и сама обновленная сущность Хоть в бд она уже не сохранялась В таком случае это дело уже не тестов?

Artem
23.07.2018
15:33:25
такое закрывается e2e тестами, сопряжёнными с ректальной карой
а почему они сопряжены с такой зверской формой экзекуции?)

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

Страница 1191 из 1387