@prophp7

Страница 1055 из 1387
Evgeniy
03.05.2018
21:06:17
и часть из них необязательная была бы

тогда такую штуку можно применить, но твой случай значительно проще

Mihail
03.05.2018
21:07:00
и некоторые и все они не необязательные
проблема в том что будут ещё методы в классе, я больше думал о сопровожденнии кода

Evgeniy
03.05.2018
21:07:15
у нас куча разных сервисов

Google
Evgeniy
03.05.2018
21:07:28
я сейчас стараюсь команде объяснить и народ стал понимать плюсы

мы каждому сервису что интегрируем создаем свой класс с методами что описаны в доке

и результаты в качестве vo обычных делаем (на основе доки)

получается например сервис1 он рест ему передается клиент газл и параметры для авторизации

сервис2 он на soap например, ему передается стандартный soap client и параметры для авторизации

эти сервисы это как бы разные классы апи

и таких реализаций у нас довольно много (много интеграций)

Mihail
03.05.2018
21:10:19
тогда нааерно удобней реализовать интерфейс который реализуют оба класса с api

Evgeniy
03.05.2018
21:10:21
например у нас несколько платежных систем подключено

не совсем

например у нас есть условно 3 платежные системы для оплаты 1. payture 2. sber 3. без нал

у каждой из этих систем абсолютно разные апи

Google
Антон
03.05.2018
21:11:33
Не DI?

Evgeniy
03.05.2018
21:12:00
di

Антон
03.05.2018
21:12:42
Т.е. в конструкторе сервиса газл?

Mihail
03.05.2018
21:12:48
Api разные, но смысл остатется тот же SendMoney и тому подобное

я конечно могу полную тупость говорить, я мало в этом понимаю, но мне кажется тут надо делать общий класс который будет реализовывать общие методы, тогда можно использовать полиморфизм

Evgeniy
03.05.2018
21:15:29
у нас есть следующее PaytureGateway ($guzzle, $username, $password)- это реализация апи на основе доки от того с кем интегрируемся у всех свои методы и тд SberGateway ($soap, $username, $password) - тоже самое есть еще PaymentInterface тут общие методы типо block, refund и тд есть еще реализации платежных систем которые адаптируют gateway конкретный в PaymentInterface например PayturePayment($paytureGateway), SberPayment($sberGateway); и весь остальной код зависит от PaymentInterface

вот полиморфизм тут на интерфейсах

в моем примере весь остальной код зависит от PaymentGateway

который в зависимости от способа оплаты выбирается

если делаешь общий базовый класс, то придется юзать наследование, а это ограничение ты зависешь от одного базового класса, остальное будешь в трейты складывать

Maksim
03.05.2018
21:17:15
"block" не надо людей неймингу учить только...) да и в целом примеры говно)

Mihail
03.05.2018
21:17:16
абстрактный класс

Антон
03.05.2018
21:17:21
А как собирается объект? new Payture($guzzle, $myusername, $mypass) ?

Evgeniy
03.05.2018
21:17:50
лара 4.2 например, у нас

автоматом цепляет часть параметров конфигах

Антон
03.05.2018
21:18:44
Ну в ларе ж нельзя часть задать, а часть через di?

Evgeniy
03.05.2018
21:19:26
так газл собирается автоматом а параметры на этапе загрузки в di проставляются

и потом по имени переменной подгружаем

Антон
03.05.2018
21:19:55
Через сервис провайдер?

Google
Evgeniy
03.05.2018
21:20:05
там не просто $username а что то типо $sberUsername и этот параметр по имени в конфиге лежит

Антон
03.05.2018
21:20:43
Пятую Лару использовал и не видел такого там

Evgeniy
03.05.2018
21:21:01
у меня своя обертка для di

я туда лару впихнул

сейчас найду

вот в мое либе пример но немного старая версия либы https://github.com/smpl/mydi/blob/master/test/Documentation/reflectionService.php

для di

например параметр $a будет искаться в di по \stdClass $b - будет юзать анотацию inject и реально туда проставиться A1 $c1 - будет использоваться по имени

Антон
03.05.2018
21:23:12
Понял

Evgeniy
03.05.2018
21:23:36
только теперь вместо c1 и B1 параметры в конфиге лежат и на этапе загрузки он читается и проставляется

Антон
03.05.2018
21:23:51
В ларе разве что binding primitives я помню

Evgeniy
03.05.2018
21:24:18
ну да типо этого я свою либу юзаю но и в ларе если покопаться можно сделать

если что на крайняк

Антон
03.05.2018
21:24:44
$this->app->when('App\Http\Controllers\UserController') ->needs('$variableName') ->give($value);

Как то так там

Evgeniy
03.05.2018
21:25:41
App::singleton(PaytureGateway::class, function($app) { return new PaytureGateway($app->get(Client::class), $app->get('sberUsername'), $app->get('sberPassword'));

в 4.2 можно

но мы в конструкторе просто имя входного параметра задаем что то типо $sberUsername и все автоматом резолвится

ну это чисто наша кухня)

Google
Admin
ERROR: S client not available

Антон
03.05.2018
21:27:08
Понял

Забавно, читаю доку Лары. Там psr-11

Evgeniy
03.05.2018
21:28:04
у меня в моей доке тоже psr-11 ?

в моей либе

вообще норм di php-di.org

Mihail
03.05.2018
21:29:54
благодарю за ссылку, как раз сейчас с сервисами в symfony начал разбиратся

Антон
03.05.2018
21:29:56
На ларовский ни разу не жаловался тоже. В отличии от yii2

Evgeniy
03.05.2018
21:30:38
в ларе норм

даже в 4.2

Антон
03.05.2018
21:33:07
А чего вы не обнлвитесь на 5?

Тяжко?

Evgeniy
03.05.2018
21:33:20
вагон легаси

Maksim
04.05.2018
06:35:50
Можно подумать главная проблема легаси - большое кол-ва строк кода)

В этих ваших модных ооп строк в разы больше by design. И чё?)

Sergey
04.05.2018
06:38:04
Maksim
04.05.2018
06:38:24
ты будто бы легаси на ООПе не писал)
Я в жизни делал много говна...)

Sergey
04.05.2018
06:39:34
в качестве примера - видел проектик на гитхабе в 1.6 миллиона строк которые могут быть зарефакторены примерно в 200К строк (без учета вендоров конечно). Много дублирования, кучи каких-то невнятных велосипедов которые можно заменить на готовые компоненты...

Maksim
04.05.2018
06:40:00
Вызываем хелбоя для рефакторинга ;)

Sergey
04.05.2018
06:40:09
о да... этот может)

Google
Maksim
04.05.2018
06:40:22
Будет 10кк)

Sergey
04.05.2018
06:40:23
"мы увеличим количество строк в вашем легаси на порядок"

Maksim
04.05.2018
06:41:50
"мы увеличим количество строк в вашем легаси на порядок"
Смотри что б только на 1) база-то не маленькая ;)

Sergey
04.05.2018
06:42:11
так к чему вопрос?

пффф... вообще не предел.

смотреть надо не на количество кода а на связанность. Есть тупой говнокод и есть "хитрый", и вот последний сложнее.

Maksim
04.05.2018
06:46:56
Кол-во кода - херовая метрика. Есть вполне понятные метрики, которые ещё укажут на его качество)

Sergey
04.05.2018
06:47:25
"так" - мы не знаем как

потому ничего не можем прокоментировать

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