Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.12.2017 02:36:17

htclog81
Откуда: Москва
Сообщений: 192
Сайт

А можно ли использовать trait в модели на выбор

Скажем при одном запросе в контроллере User был с trait BillableStripe а при другом BillableBraintree. Вопрос не столько о синтаксисе и ООП. А скорее о паттернах и практиках. Или тут скорее создать два сервис провайдера включающих зависимость от User и вызывать в контроллере или тот или другой по надобности смотря какую форму отправили?

Не в сети

#2 08.12.2017 08:24:54

Re: А можно ли использовать trait в модели на выбор

Ты сейчас изобретаешь полиморфизм. https://habrahabr.ru/post/37610/


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 08.12.2017 13:17:32

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: А можно ли использовать trait в модели на выбор

Понял. И от чего тут можно отнаследовать? сделать интерфейс и от него два сервиса? Или от класса User отнаследовать 2 класса, каждый из который подключает свой trait ?

Не в сети

#4 08.12.2017 20:31:46

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: А можно ли использовать trait в модели на выбор

Вообще какую бы Вы выбрали архитектуру для SAAS приложения, которая не привязано жестко к одному шлюзу, а где User может выбирать скажем оплату и подписку картой через Stripe, а оплату и подписку PayPal чеерез Braintree, а может и еще какие то платежные методы и шлюзы для регулярных платежей...

Понятно можно сделать что то похожее на Laravel cashier с наследованием от интерфейса или абстрактного класса и полимформизмом метода, скажем метод newSubscription() для одного метода подписки так реализован, для другого сяк. Также isSubscriebed() OnTrial() итд. Но вот поточнее бы структуру кто порекомендовал.. И как то может с trait'ами для юзера намутить... Что бы вызывали скажем всегда $user->newSubscription() $user->isSubscriebed() но вот где то дали понять метод какого типа наследника использовать...  Может если речь о создании новой именно подписки то что то вроде паттерна фабрика, фабричный метод. А уже для существующей подписки, выбранные метод будет полем модели юзер и в завимости от его значения тот или иной наследник будет подгружаться...

В общем какое то бы простое красивое решение

Изменено htclog81 (08.12.2017 20:32:00)

Не в сети

Подвал раздела