
Subb98
22.06.2018
06:25:13

Саша
22.06.2018
06:25:22

[Anonymous]
22.06.2018
06:25:26

Anton
22.06.2018
06:25:28
Один тупо создание юзера, второй импорт массовый, если ты не используешь сервис, вероятность того что ты повторишь код велика

Google

Anton
22.06.2018
06:26:30
Корзина это у тебя не сервис это по факту сущность

[Anonymous]
22.06.2018
06:26:33
Я так понимаю через контракты (интерфейсы), но что будет если несколько сервисов имеют очень похожие контракты.. Или как вариант товар, корзину и сервис заказа объединить в какой то глобальный модуль, чтобы они могли знать друг про друга

Саша
22.06.2018
06:27:06

Артур
22.06.2018
06:27:15
В теории класс должен получить данные и вернуть результат
А там уже делай что хочешь с ним

Саша
22.06.2018
06:28:39
я их не сохраняю
я из них получаю какие то поля

Артур
22.06.2018
06:29:20
тогда не понимаю в чем проблема

Саша
22.06.2018
06:29:24
в некоторых сервисах

Артур
22.06.2018
06:29:27
Можешь пример привести?

Anton
22.06.2018
06:29:33

Артур
22.06.2018
06:29:56

Google

Саша
22.06.2018
06:30:30
моки не помогают?
помогают, проблема в том что приходится мокать по ублюдочному. магический __get, для того чтобы нужные проперти возвращались когда сервис их требует

Артур
22.06.2018
06:30:56

Dead
22.06.2018
06:31:14
Dead Loppi:
Пыха выдержит если будет 3к запросов в секунду ?

Артур
22.06.2018
06:31:53

[Anonymous]
22.06.2018
06:32:35

Саша
22.06.2018
06:32:44
пример: есть сервис который получает на вход модель актив рекорд, с ней работает получая из нее проперти, обрабатывает эти проперти должным образом, и возвращает их уже обработанную коллекцию

Артур
22.06.2018
06:33:22
ты в сервисах мокаешь метод сервиса или модель локвент, используемую там?

Саша
22.06.2018
06:33:57
но есть методы которые мне нужно протестить, и которые юзают внутри себя модель элокуента
можно конечно сделать в сервисе отдельный протектед метод просто для того чтобы он вытаскивал мне нужные данные из модельки, и замокать этот метод так чтобы он просто ретернил нужный результат
но помоему это херня какаято
какойто ваще вопрос у тебя странный
типа привести случай когда мне нужен источник данных внутри сервиса. да таких случаев тьма тьмущая
в доке симфони на этот случай описано как правильно мокать репозитории
что же до лары - даже джеффри на ларакастах настаивает на том чтобы делать только интеграционные тесты на те сервисы которые работают с моделями


Anton
22.06.2018
06:36:37
Тебе нужно сделать класс корзины, как хочешь делай если у тебя корзина может менять место хранения сдлей интерфейс IBasket Add, Remove, Get, List, затем бомбани класс например SessionBasket implements IBasket, реализуй в нем хранение товара, товар напирмер сделай так что б он реализовывал интерфейс напрмер назови его IProductable { getPrice, getTtile, getProps }, ну и так далее
и потом сдлей севрис
В контроллере корзины я думаю сервисы тебе не нужны вообще будут
потому что ты примешь класс баскет в контроллер через DI, а затем будешь делать $basket->add, basket->remove, basket->get, basket->list

Andrey
22.06.2018
06:38:51
Да чего вы спорите) сделайте сначала как видите, сделайте так, чтобы работало, учтите все то, что хотите/можете учесть. А дальше есть замечательная штука - "рефакторинг" зовется. Постепенно придете к желанному виду модуля :-)

Google

Артур
22.06.2018
06:39:03
какойто ваще вопрос у тебя странный
Если ты хочешь использовать метод для получения данных для дальнейшего теста - ео можно замокать. Т.к. не его логика тестируется.
Если ты тестируешь метод, который работает перерабатывает данные и возвращает новый результат то тут 2 пути:
1. Передать живой объект и получить его обратно с обновленными данными, далее assert.
2 (приходится иногда): вызывается метод, дальше происходит какая-то магия и каким-то загадочным образом происходят изменения, которые проверяются уже в базе.
Но втрой слуай это функциональный тест, а не модульный.
они отлличаются отвественностью
При построении логики я стараюсь писать именно модульные тесты


[Anonymous]
22.06.2018
06:40:51
Тебе нужно сделать класс корзины, как хочешь делай если у тебя корзина может менять место хранения сдлей интерфейс IBasket Add, Remove, Get, List, затем бомбани класс например SessionBasket implements IBasket, реализуй в нем хранение товара, товар напирмер сделай так что б он реализовывал интерфейс напрмер назови его IProductable { getPrice, getTtile, getProps }, ну и так далее
с 1 понятно, это задача корзины.. А интерфейс IProductable где должен быть? С одной стороны его должна кушать корзина, но с другой не только ей же такой интерфейс может понадобиться

Саша
22.06.2018
06:41:02
вот и приходится его мокать

[Anonymous]
22.06.2018
06:41:26
Допустим сервису заказа тоже может быть нужен такой же товар, а у него свой интерфейс.. Надо будет 2 реализовывать?

Anton
22.06.2018
06:41:35
IProductable должна получить модель с продуктом

[Anonymous]
22.06.2018
06:42:06
я имею ввиду кто пользователь этого интерфейса

Anton
22.06.2018
06:42:23
Product implements IProductable
продукт
ты ж его собираешься в корзину класть
и в заказе потом выодить

[Anonymous]
22.06.2018
06:42:56
ну пользоваться этим интерфейсом будет корзина

Anton
22.06.2018
06:43:07
не только

[Anonymous]
22.06.2018
06:43:11
соответственно она должна знать про этот интерфейс
хм ну вот про то и речь
А как переносимая корзина узнает о каком то внешнем интерфейсе

Anton
22.06.2018
06:43:45
Куда ты ее переносить собрался ?

Google

Евгений
22.06.2018
06:43:48
кто какой WYSIWYG редактор юзает с возможностью загрузки картинок на сервер?

[Anonymous]
22.06.2018
06:44:07

Anton
22.06.2018
06:44:42
Все чувак :) я работать )) мне демогогию разводить на пустом месте некогда )

Daniel
22.06.2018
06:45:42

Евгений
22.06.2018
06:47:09
а у elfinder есть какие нибудь темы, чтоб под буцтрап внешний вид сделать?

Daniel
22.06.2018
06:48:46
https://github.com/search?q=elfinder+theme
ну там всё сводится к закидыванию css файла в нужное место
по дефолту смотрится вот так - https://studio-42.github.io/elFinder/, ничего лишнего)

Евгений
22.06.2018
06:50:05
не нравится по дефолту)
спасибо

Артур
22.06.2018
06:55:50
Если не о полях, тогда вопрос зачем в элокуент вообще они живут, кроме предопределенных
Или я элоквент не так юзаю)

Nik
22.06.2018
07:05:21
>живой объект
нет такого термина, в вики
>В элокуенте публичные проверти = поля.
где ты там вообще пидел публичные проперти и более того - для чего?

Romuald
22.06.2018
08:08:30
Парни. Если нужно через ORM получить объекты модели, но при этом некоторые поля нужно по своему отформатировать, можно для этого ресурс использовать?

Daniel
22.06.2018
08:09:59

Oleg
22.06.2018
08:10:03
Ресурс срабатывает только при энкоде
Используй аксессоры

?Donnie ??
22.06.2018
08:12:56
В можельке сделай метод getNameAttribute()

Romuald
22.06.2018
08:15:16
Понял, спасибо

Daniel
22.06.2018
08:16:14
кстати, про аксессоры. недавно столкнулся с тем, что если используется пакет spatie/laravel-translatable и поле в модели занесено в переменную $translatable, то нельзя просто так взять и поиграться с этой колонкой при получении данных.

Google

Romuald
22.06.2018
08:21:26
Спасибо! Даже под мою задачу уже было решение. Невнимательно читал доку
protected $casts = [
'field' => 'array'
]

Jorj
22.06.2018
08:30:50
А если модель имеет вложенную модель через связь, но хочется возвращать не все поля вложенной модели?

Romuald
22.06.2018
08:32:44

Jorj
22.06.2018
08:33:47
хм, спасибо, поидее можно и с коллекцией отобрать нужные поля...

Евгений
22.06.2018
08:34:33

Romuald
22.06.2018
08:35:01
У меня просто единоразовая задача. Если повторится, то в модель перекину

Maksim (Ellrion)
22.06.2018
08:35:57
там несколько решений. можно выбирать только часть полей используя sеlect, можно использовать проперти hidden у связанной модели, можно это поле выставлять "налету" используя метод setHidden (addHidden). можно использовать ресурсы

Nik
22.06.2018
08:36:31

Romuald
22.06.2018
08:37:02
Самая удобная на мой взгляд - коллекции

Maksim (Ellrion)
22.06.2018
08:37:21
соответственно подход зависит от сложности приложения и кол-ва мест где такое нужно. самый продвинутый и гибкий это конечно ресурсы, по сути вью леер для json респонсов

Rustam
22.06.2018
08:42:53
Парни привет
Carbon\Carbon::parse($post->created)->formatLocalized('%d %B %Y')
Как сделат ьчтобы месяц выводился короткий в 3 буквы?

Jura
22.06.2018
08:44:48
M Сокращенное наименование месяца, 3 символа от Jan до Dec
http://php.net/manual/ru/function.date.php

Sergey
22.06.2018
08:51:10
Приветствую. В файловой системе есть нечто подобное:
Папка images, в ней куча подпапок, имена соответствуют id материалов. В каждой из подпапок уже jpg-файлы, т.е. images/111/1.jpg, images/111/2.jpg и тд.
Можно ли как то с помощью Storage оптимально получить список подпапок с листингом файлов? рекурсивно обходить что то неохота, там папок пока под 10к, дальше будет больше
Т.е., хотелось бы получить на выходе массив типа ['111'=>['1.jpg', '2.jpg']] и т.д.

Nik
22.06.2018
08:57:27

Rustam
22.06.2018
08:57:41