@prophp7

Страница 137 из 1387
Pavel
13.12.2016
17:01:24
Сайт с одним свифтмейлером скачивает минут 5, еще синхронизация минут 5. И так каждый раз. Я понимаю конечно, что можно исключить из выдачи vendor и юзать компосер и на сервере и на клиенте, но это неудобно

Sergey
13.12.2016
17:01:56
а зачем с ними работать?

Pavel
13.12.2016
17:02:31
Ну а как? Постоянно делать изменения и лезть в FTP чтоли попутно вспоминая что поменял?

Sergey
13.12.2016
17:02:43
git?)

Google
Pavel
13.12.2016
17:03:24
Я не шарю как деплоить с помощью гита. В пхпшторме же есть такой функционал, и работает он отвратительно

Mihail
13.12.2016
17:03:36
0_o

$iD
13.12.2016
18:18:15
Было бы там в чем шарить. Уделить час чтобы понять пару основных команд и жить в кайф.

Sergey
13.12.2016
19:05:39
Я не шарю как деплоить с помощью гита. В пхпшторме же есть такой функционал, и работает он отвратительно
это не "функционал" работает отвратительно, а FTP работает отвратительно с огромным количеством файлов

Sergey
13.12.2016
19:06:16
Не шаришь и, походу, даже гордишься этим.
я думаю это ему не поможет особо, подозреваю что человеку лень развернуть рабочее окружение локально

Дк никтож не запрещает SSH вместо FTP запилить
SCP ты хотел сказать, и да, оно работает с большим количеством мелких файлов... чуть лучше но лишь чуть.

лучше настрой rsync

и радуйся

все будет молниеносно

никто не хочет придумать мэппер данных на объекты?

ну или обсудить

Google
da horsie
13.12.2016
19:44:41
мм

продолжай

Sergey
13.12.2016
19:44:53
ну вот сейчас составляю gist

с хотелками и списком имеющихся мэпперов/гидраторов на данный момент

в целом мне нужна штука, которая позволяет мэпить json на объекты

и не только json

а вообще что угодно на что угодно

da horsie
13.12.2016
19:45:38
мне тоже такая штука нужна

Sergey
13.12.2016
19:45:46
в целом я пока делаю так

class UserRequestMappers { public function registerUserRequest(Http\Request $request): RegisterUserRequest { $mapped = new RegisterUserRequest(); $mapped->email = $request->get('email'); $mapped->password = $request->get('password'); $mapped->name = $request->get('name'); return $mapped; } public function loginRequest(Http\Request $request): LoginRequest { $mapped = new LoginRequest(); } }

ну это то чем я пользуюсь сейчас

у меня таких классов несколько

и есть штука которая на основе return type выясняет какой мэппер для какого типа

и сама все связывает между собой

но мне не нравится

из всех пока больше всех нравится https://github.com/ScriptFUSION/Mapper

но он сырой и умеет только массив в массив конвертить

гидрировать объекты он не умеет и научить его этому не особо выйдет

da horsie
13.12.2016
19:51:31
есть еще одна связанная задача - валидация запроса перед или в процессе маппинга

Sergey
13.12.2016
19:51:44
да, тоже на этом пока туплю

Google
Sergey
13.12.2016
19:51:48
с одной стороны надо и до и после

da horsie
13.12.2016
19:51:56
я не знаю как правильно

я сделал свой костыль

Sergey
13.12.2016
19:52:00
ну мол если мне прислали json я должен именно его валидировать

da horsie
13.12.2016
19:52:20
у меня есть обертка над сырым json

Sergey
13.12.2016
19:52:20
ибо с точки зрения клиента я должен возвращать ошибки валидации данных привязанных к той структуре, которую мне прислали

da horsie
13.12.2016
19:53:12
которая имеет методы типа дай_мне_инт_по_адресу('foo.bar')

метод возвращает int или плюется ValidationException

Sergey
13.12.2016
19:53:53
ну такое... идеально было бы получить сначала все ошибки а потом плюнуть ValidationException

da horsie
13.12.2016
19:54:01
да

мне оно тоже не нравится

я смотрел в соторону JSON schema

Sergey
13.12.2016
19:54:21
ништяк, мы с тобой одной и той же задачей заняты)

da horsie
13.12.2016
19:54:28
но оно умеет только в валидацию

Sergey
13.12.2016
19:54:35
ну да

da horsie
13.12.2016
19:54:54
и получается, что информация о структуре запроса живет в двух местах одновременное - в валидаторе и в маппере

что явно нарушает information expert

но я хз че делать

Sergey
13.12.2016
19:55:16
у меня еще была безумная идея

разворачивать ошибки валидации на старую структуру

Google
Sergey
13.12.2016
19:55:42
мол имя информацию о мэппинге мы можем произвести обратную операцию

и нам по сути только пути к пропертям подправить надо

da horsie
13.12.2016
19:56:07
не понял

Sergey
13.12.2016
19:56:09
но я на 100% не уверен что у меня есть вся информация для туда-сюда

ну например

я посылаю JSON

{"foo": {"bar": "not int"}}

и хочу замэпить на объект

class Foo { public $bar; // int }

Admin
ERROR: S client not available

Sergey
13.12.2016
19:57:19
я мэплю данные, загоняю объект в валидатор

и он выдает ошибки

path=['bar'], message="not int"

и я могу обратно потом сконвертить пути

da horsie
13.12.2016
19:57:52
в json?

Sergey
13.12.2016
19:57:59
path=['foo.bar'], message=not int

da horsie
13.12.2016
19:58:32
и вернуть это отправителю?

Sergey
13.12.2016
19:58:36
да

da horsie
13.12.2016
19:59:00
ну такое)

Sergey
13.12.2016
19:59:05
кастылек)

Google
Sergey
13.12.2016
19:59:17
но зато все красиво. информация о структуре в мэппере, валидация у валидатора

da horsie
13.12.2016
19:59:21
было пять стандартов, придумали шестой)

Sergey
13.12.2016
19:59:31
ну почему же?

имея мэппер, который можем мне сказать с чего на что мэпить или мэпилось

я могу написать трансформер ошибок

под любой валидатор

что несколько проще чем дублировать правила валидации

ну и можно для популярных пакетов сделать одинаково

в частности мне надо под symfony/validation

но честно - хэзэ

da horsie
13.12.2016
20:01:08
ну

тогда валидировать должна сама модель. ты ей пихаешь неправильные данные - она тебе ValidationException. маппер его ловит и возвращает ответ - при попытке насадить такой-то проперти получил такой-то эксепшн

Sergey
13.12.2016
20:02:44
погоди

у меня мэппинг идет на DTO

я потом этот DTO скармливаю валидатору

тот его валидирует

это может быть и сущность или active record модель если надо

но с DTO проще

вообще давай нагенерим юзкейсы)

da horsie
13.12.2016
20:04:42
гм, с ДТО чето сложно

Sergey
13.12.2016
20:05:06
у меня юзкейс простой. У меня есть некие RequestObject-ы которые простые POPO объекты, содержащие входные данные для сервисов-хэндлеров, реализующих какие-то действия в духе "зарегистрируй чувака"

в них иногда появляются вложенные объекты

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