Factory Method
This commit is contained in:
58
code/factory_method.php
Normal file
58
code/factory_method.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?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');
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
use Pattern\Creational\{Singleton, Sub\Single};
|
||||
use Pattern\Creational\{Singleton\Single, Singleton\Singleton};
|
||||
|
||||
/**
|
||||
* The client code.
|
||||
|
||||
Reference in New Issue
Block a user