design-patterns/code/factory_method.php
2025-07-03 19:35:54 +03:00

59 lines
1.4 KiB
PHP

<?php
/**
* @package: patterns
* @author: Yevhen Odynets
* @date: 2025-07-03
* @time: 12:16
*/
declare(strict_types = 1);
use Pattern\Creational\FactoryMethod\{CashlessPayment, CashPayment, Order, PaymentHelper};
use Random\RandomException;
function execute(string $scope): void
{
echo '<hr/>' . ucfirst($scope) . ' App Payments:<hr/>' . PHP_EOL;
try {
$orderData = [
[
'order' => new Order(getFloatRange()),
'paymentType' => 'privat',
],
[
'order' => new Order(getFloatRange()),
'paymentType' => 'raiffeisen',
],
[
'order' => new Order(getFloatRange()),
'paymentType' => 'ing',
],
[
'order' => new Order(getFloatRange()),
'paymentType' => 'otp',
]
];
if ($scope === 'web') {
$orderData[] = [
'order' => new Order(getFloatRange()),
'paymentType' => 'cash',
];
}
foreach ($orderData as $orderDataItem) {
['order' => $order, 'paymentType' => $type] = $orderDataItem;
$payment = PaymentHelper::getPaymentFactory($type)->createPayment();
$payment->pay($order);
}
} catch (RandomException $e) {
echo $e->getMessage();
}
}
execute('web');
execute('mobile');