У меня есть несколько вариантов оплаты (Stripe, Paypal, PayUMoney и т. Д.).Я хочу создать отдельный класс для каждого типа платежа и Интерфейс платежей , который будет реализован такими классами, как этот,
interface PaymentInterface {
public function payment($params);
}
class Stripe implements PaymentInterface {
public function payment($params) { ... }
}
class Paypal implements PaymentInterface {
public function payment($params) { ... }
}
Из моего основного класса я хочу использовать метод оплаты,Я отправлю данные о платежах в свой основной метод и хочу динамически определить способ оплаты.
class PaymentModule {
public function confirmPayment(Request $request){
// create an object of the payment class
// $obj = new PaymentTypeClass **(Problem is here)**
// $obj->payment($params)
}
}
Мой вопрос здесь, как я могу динамически создать связанный класс / объект платежа и вызвать payment() метод из метода main?
Если я создаю объект условно, то я нарушаю принцип Open-Closed.Потому что я проверяю тип платежа, используя Если ... еще , затем создаю объект и вызываю payment () , который может потребовать дальнейшей модификации.