diff --git a/code/adapter.php b/code/adapter.php
new file mode 100644
index 0000000..b7a04f4
--- /dev/null
+++ b/code/adapter.php
@@ -0,0 +1,62 @@
+getData());
+}
+
+?>
Патерни
-
-
-
+
+
+
-
+
diff --git a/src/Pattern/Creational/AbstractFactory/AbstractFactoryInterface.php b/src/Pattern/Creational/AbstractFactory/AbstractFactoryInterface.php
index 940fe77..b433fd0 100644
--- a/src/Pattern/Creational/AbstractFactory/AbstractFactoryInterface.php
+++ b/src/Pattern/Creational/AbstractFactory/AbstractFactoryInterface.php
@@ -22,4 +22,4 @@ interface AbstractFactoryInterface
* @return PackageInterface
*/
public function createPackage(): PackageInterface;
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/DeliveryServiceInterface.php b/src/Pattern/Creational/AbstractFactory/DeliveryServiceInterface.php
index be3249a..d0dc2fd 100644
--- a/src/Pattern/Creational/AbstractFactory/DeliveryServiceInterface.php
+++ b/src/Pattern/Creational/AbstractFactory/DeliveryServiceInterface.php
@@ -14,4 +14,4 @@ namespace Pattern\Creational\AbstractFactory;
interface DeliveryServiceInterface
{
public function sendPackage(PackageInterface $package): void;
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/JustinDeliveryService.php b/src/Pattern/Creational/AbstractFactory/JustinDeliveryService.php
index b54caa3..bc310be 100644
--- a/src/Pattern/Creational/AbstractFactory/JustinDeliveryService.php
+++ b/src/Pattern/Creational/AbstractFactory/JustinDeliveryService.php
@@ -18,4 +18,4 @@ class JustinDeliveryService implements DeliveryServiceInterface
/** @noinspection ForgottenDebugOutputInspection */
dump("Sending package via Justin...");
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/JustinPackage.php b/src/Pattern/Creational/AbstractFactory/JustinPackage.php
index 45b07fb..35558bd 100644
--- a/src/Pattern/Creational/AbstractFactory/JustinPackage.php
+++ b/src/Pattern/Creational/AbstractFactory/JustinPackage.php
@@ -18,4 +18,4 @@ class JustinPackage implements PackageInterface
/** @noinspection ForgottenDebugOutputInspection */
dump('Checking package from Justin...');
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/MeestDeliveryService.php b/src/Pattern/Creational/AbstractFactory/MeestDeliveryService.php
index 7b54303..84aec4e 100644
--- a/src/Pattern/Creational/AbstractFactory/MeestDeliveryService.php
+++ b/src/Pattern/Creational/AbstractFactory/MeestDeliveryService.php
@@ -19,4 +19,4 @@ class MeestDeliveryService implements DeliveryServiceInterface
/** @noinspection ForgottenDebugOutputInspection */
dump("Sending package via Meest...");
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/MeestPackage.php b/src/Pattern/Creational/AbstractFactory/MeestPackage.php
index f300805..8870e31 100644
--- a/src/Pattern/Creational/AbstractFactory/MeestPackage.php
+++ b/src/Pattern/Creational/AbstractFactory/MeestPackage.php
@@ -18,4 +18,4 @@ class MeestPackage implements PackageInterface
/** @noinspection ForgottenDebugOutputInspection */
dump('Checking package from Meest...');
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/NovapostDeliveryService.php b/src/Pattern/Creational/AbstractFactory/NovapostDeliveryService.php
index a765030..5ae9659 100644
--- a/src/Pattern/Creational/AbstractFactory/NovapostDeliveryService.php
+++ b/src/Pattern/Creational/AbstractFactory/NovapostDeliveryService.php
@@ -18,4 +18,4 @@ class NovapostDeliveryService implements DeliveryServiceInterface
/** @noinspection ForgottenDebugOutputInspection */
dump("Sending package via Novapost...");
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/NovapostPackage.php b/src/Pattern/Creational/AbstractFactory/NovapostPackage.php
index 3c7d493..f8cd6c1 100644
--- a/src/Pattern/Creational/AbstractFactory/NovapostPackage.php
+++ b/src/Pattern/Creational/AbstractFactory/NovapostPackage.php
@@ -18,4 +18,4 @@ class NovapostPackage implements PackageInterface
/** @noinspection ForgottenDebugOutputInspection */
dump('Checking package from Novapost...');
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/PackageInterface.php b/src/Pattern/Creational/AbstractFactory/PackageInterface.php
index 7ee70ab..e1332bd 100644
--- a/src/Pattern/Creational/AbstractFactory/PackageInterface.php
+++ b/src/Pattern/Creational/AbstractFactory/PackageInterface.php
@@ -14,4 +14,4 @@ namespace Pattern\Creational\AbstractFactory;
interface PackageInterface
{
public function getConsist(): void;
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/UkrpostDeliveryService.php b/src/Pattern/Creational/AbstractFactory/UkrpostDeliveryService.php
index 16f1380..e09ce3f 100644
--- a/src/Pattern/Creational/AbstractFactory/UkrpostDeliveryService.php
+++ b/src/Pattern/Creational/AbstractFactory/UkrpostDeliveryService.php
@@ -18,4 +18,4 @@ class UkrpostDeliveryService implements DeliveryServiceInterface
/** @noinspection ForgottenDebugOutputInspection */
dump("Sending package via Ukrpost...");
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/AbstractFactory/UkrpostPackage.php b/src/Pattern/Creational/AbstractFactory/UkrpostPackage.php
index 02185c2..ac8778e 100644
--- a/src/Pattern/Creational/AbstractFactory/UkrpostPackage.php
+++ b/src/Pattern/Creational/AbstractFactory/UkrpostPackage.php
@@ -18,4 +18,4 @@ class UkrpostPackage implements PackageInterface
/** @noinspection ForgottenDebugOutputInspection */
dump('Checking package from Ukrpost...');
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/FactoryMethod/CashPayment.php b/src/Pattern/Creational/FactoryMethod/CashPayment.php
index e9a51ad..5d0a32e 100644
--- a/src/Pattern/Creational/FactoryMethod/CashPayment.php
+++ b/src/Pattern/Creational/FactoryMethod/CashPayment.php
@@ -18,4 +18,4 @@ class CashPayment implements PaymentInterface
/** @noinspection ForgottenDebugOutputInspection */
dump("Cash payment success, amount: {$order->getSum()} ₴");
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/FactoryMethod/IngPayment.php b/src/Pattern/Creational/FactoryMethod/IngPayment.php
index b2f5328..0afd72f 100644
--- a/src/Pattern/Creational/FactoryMethod/IngPayment.php
+++ b/src/Pattern/Creational/FactoryMethod/IngPayment.php
@@ -18,4 +18,4 @@ class IngPayment implements PaymentInterface
/** @noinspection ForgottenDebugOutputInspection */
dump("ING Bank payment success, amount: {$order->getSum()} ₴");
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/FactoryMethod/IngPaymentFactory.php b/src/Pattern/Creational/FactoryMethod/IngPaymentFactory.php
index 9f2d332..bbc47b2 100644
--- a/src/Pattern/Creational/FactoryMethod/IngPaymentFactory.php
+++ b/src/Pattern/Creational/FactoryMethod/IngPaymentFactory.php
@@ -17,4 +17,4 @@ class IngPaymentFactory implements PaymentFactoryInterface
{
return new IngPayment();
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/FactoryMethod/OtpPayment.php b/src/Pattern/Creational/FactoryMethod/OtpPayment.php
index bef3a22..02adfe9 100644
--- a/src/Pattern/Creational/FactoryMethod/OtpPayment.php
+++ b/src/Pattern/Creational/FactoryMethod/OtpPayment.php
@@ -18,4 +18,4 @@ class OtpPayment implements PaymentInterface
/** @noinspection ForgottenDebugOutputInspection */
dump("Otp Bank payment success, amount: {$order->getSum()} ₴");
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/FactoryMethod/OtpPaymentFactory.php b/src/Pattern/Creational/FactoryMethod/OtpPaymentFactory.php
index 9234f06..4f4c8b0 100644
--- a/src/Pattern/Creational/FactoryMethod/OtpPaymentFactory.php
+++ b/src/Pattern/Creational/FactoryMethod/OtpPaymentFactory.php
@@ -17,4 +17,4 @@ class OtpPaymentFactory implements PaymentFactoryInterface
{
return new OtpPayment();
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/FactoryMethod/PaymentInterface.php b/src/Pattern/Creational/FactoryMethod/PaymentInterface.php
index 7785539..7b4acc8 100644
--- a/src/Pattern/Creational/FactoryMethod/PaymentInterface.php
+++ b/src/Pattern/Creational/FactoryMethod/PaymentInterface.php
@@ -14,4 +14,4 @@ namespace Pattern\Creational\FactoryMethod;
interface PaymentInterface
{
public function pay(Order $order): void;
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/FactoryMethod/PrivatPayment.php b/src/Pattern/Creational/FactoryMethod/PrivatPayment.php
index b50e63b..0e9ad89 100644
--- a/src/Pattern/Creational/FactoryMethod/PrivatPayment.php
+++ b/src/Pattern/Creational/FactoryMethod/PrivatPayment.php
@@ -18,4 +18,4 @@ class PrivatPayment implements PaymentInterface
/** @noinspection ForgottenDebugOutputInspection */
dump("Privatbank payment success, amount: {$order->getSum()} ₴");
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/FactoryMethod/RaiffeisenPayment.php b/src/Pattern/Creational/FactoryMethod/RaiffeisenPayment.php
index cc37dfa..b00a5db 100644
--- a/src/Pattern/Creational/FactoryMethod/RaiffeisenPayment.php
+++ b/src/Pattern/Creational/FactoryMethod/RaiffeisenPayment.php
@@ -18,4 +18,4 @@ class RaiffeisenPayment implements PaymentInterface
/** @noinspection ForgottenDebugOutputInspection */
dump("Raiffeisen Bank payment success, amount: {$order->getSum()} ₴");
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/FactoryMethod/RaiffeisenPaymentFactory.php b/src/Pattern/Creational/FactoryMethod/RaiffeisenPaymentFactory.php
index a09b46e..ce053b2 100644
--- a/src/Pattern/Creational/FactoryMethod/RaiffeisenPaymentFactory.php
+++ b/src/Pattern/Creational/FactoryMethod/RaiffeisenPaymentFactory.php
@@ -17,4 +17,4 @@ class RaiffeisenPaymentFactory implements PaymentFactoryInterface
{
return new RaiffeisenPayment();
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/Singleton/Loggable.php b/src/Pattern/Creational/Singleton/Loggable.php
index 46ad7d0..cb713ce 100644
--- a/src/Pattern/Creational/Singleton/Loggable.php
+++ b/src/Pattern/Creational/Singleton/Loggable.php
@@ -14,4 +14,4 @@ namespace Pattern\Creational\Singleton;
interface Loggable
{
public static function getInstance(): static;
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/Singleton/Single.php b/src/Pattern/Creational/Singleton/Single.php
index 70b51c7..41cb5a5 100644
--- a/src/Pattern/Creational/Singleton/Single.php
+++ b/src/Pattern/Creational/Singleton/Single.php
@@ -9,6 +9,7 @@
//phpcs:ignore
declare(strict_types = 1);
+
namespace Pattern\Creational\Singleton;
class Single extends Singleton implements SingleInterface
@@ -18,4 +19,4 @@ class Single extends Singleton implements SingleInterface
/** @noinspection ForgottenDebugOutputInspection */
dump(__METHOD__);
}
-}
\ No newline at end of file
+}
diff --git a/src/Pattern/Creational/Singleton/Singleton.php b/src/Pattern/Creational/Singleton/Singleton.php
index 3ac148e..6ac6bb6 100644
--- a/src/Pattern/Creational/Singleton/Singleton.php
+++ b/src/Pattern/Creational/Singleton/Singleton.php
@@ -101,5 +101,3 @@ class Singleton
return $this;
}
}
-
-
diff --git a/src/Pattern/Structural/Adapter/JsonReport.php b/src/Pattern/Structural/Adapter/JsonReport.php
new file mode 100644
index 0000000..91ffc96
--- /dev/null
+++ b/src/Pattern/Structural/Adapter/JsonReport.php
@@ -0,0 +1,46 @@
+ 'Mikrotik RB4011iGS+RM',
+ 'price' => 9094,
+ 'count' => 27,
+ ],
+ [
+ 'name' => 'Cisco ISR4331-VSEC/K9',
+ 'price' => 167955,
+ 'count' => 8,
+ ],
+ [
+ 'name' => 'TP-Link ER605 (TL-R605)',
+ 'price' => 2499,
+ 'count' => 895,
+ ],
+ [
+ 'name' => 'D-Link DSL-2500U/BRU/D',
+ 'price' => 420,
+ 'count' => 112,
+ ],
+ ], JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
+ }
+}
diff --git a/src/Pattern/Structural/Adapter/JsonToPHPArrayReportAdapter.php b/src/Pattern/Structural/Adapter/JsonToPHPArrayReportAdapter.php
new file mode 100644
index 0000000..3ad755a
--- /dev/null
+++ b/src/Pattern/Structural/Adapter/JsonToPHPArrayReportAdapter.php
@@ -0,0 +1,30 @@
+report->buildJson();
+
+ return json_decode($data, true, 512, JSON_THROW_ON_ERROR);
+ }
+}
diff --git a/src/Pattern/Structural/Adapter/PHPArrayReport.php b/src/Pattern/Structural/Adapter/PHPArrayReport.php
new file mode 100644
index 0000000..aac4312
--- /dev/null
+++ b/src/Pattern/Structural/Adapter/PHPArrayReport.php
@@ -0,0 +1,36 @@
+ 'USB HDD Transcend StoreJet25M3 2 TB Iron Gray (TS2TSJ25M3S)',
+ 'price' => 4589,
+ 'count' => 536,
+ ],
+ [
+ 'name' => 'HDD Seagate IronWolf 4 TB (ST4000VN006)',
+ 'price' => 5069,
+ 'count' => 346,
+ ],
+ [
+ 'name' => 'HDD WD Purple 4 TB (WD43PURZ)',
+ 'price' => 4109,
+ 'count' => 142,
+ ],
+ ];
+ }
+}
diff --git a/src/Pattern/Structural/Adapter/PHPArrayReportInterfaceAdapter.php b/src/Pattern/Structural/Adapter/PHPArrayReportInterfaceAdapter.php
new file mode 100644
index 0000000..60561f7
--- /dev/null
+++ b/src/Pattern/Structural/Adapter/PHPArrayReportInterfaceAdapter.php
@@ -0,0 +1,17 @@
+ 'Makita 4329',
+ 'price' => 3479,
+ 'count' => 395,
+ ],
+ [
+ 'name' => 'Bosch PST 650 (06033A0721)',
+ 'price' => 2103,
+ 'count' => 983,
+ ],
+ [
+ 'name' => 'Dnipro-M JS-65LX (98609000)',
+ 'price' => 1920,
+ 'count' => 674,
+ ],
+ [
+ 'name' => 'RZTK AJ 650 (252143876)',
+ 'price' => 699,
+ 'count' => 1265,
+ ],
+ [
+ 'name' => 'AEG STEP 70 (4935412900)',
+ 'price' => 3950,
+ 'count' => 765,
+ ],
+ ]);
+ }
+}
diff --git a/src/Pattern/Structural/Adapter/SerializedToPHPArrayReportAdapter.php b/src/Pattern/Structural/Adapter/SerializedToPHPArrayReportAdapter.php
new file mode 100644
index 0000000..8738f5b
--- /dev/null
+++ b/src/Pattern/Structural/Adapter/SerializedToPHPArrayReportAdapter.php
@@ -0,0 +1,23 @@
+report->getData(), ["allowed_classes" => false]);
+ }
+}
diff --git a/src/Pattern/Structural/Adapter/XMLReport.php b/src/Pattern/Structural/Adapter/XMLReport.php
new file mode 100644
index 0000000..4d8209a
--- /dev/null
+++ b/src/Pattern/Structural/Adapter/XMLReport.php
@@ -0,0 +1,37 @@
+
+
+
+ Ibanez RG421EX
+ 21278
+ 129
+
+
+ Fender Debut Stratocaster HSS Dakota Red
+ 8400
+ 289
+
+
+ Harley Benton ST-20 BK Standard Series
+ 5190
+ 389
+
+ ';
+ }
+}
diff --git a/src/Pattern/Structural/Adapter/XMLToPHPArrayReportAdapter.php b/src/Pattern/Structural/Adapter/XMLToPHPArrayReportAdapter.php
new file mode 100644
index 0000000..7e58e67
--- /dev/null
+++ b/src/Pattern/Structural/Adapter/XMLToPHPArrayReportAdapter.php
@@ -0,0 +1,32 @@
+report->buildXML();
+ $xml = simplexml_load_string($xmlData);
+ $json = json_encode($xml, JSON_THROW_ON_ERROR);
+
+ return json_decode($json, true, 512, JSON_THROW_ON_ERROR);
+ }
+}
diff --git a/src/Pattern/Structural/Adapter/YamlReport.php b/src/Pattern/Structural/Adapter/YamlReport.php
new file mode 100644
index 0000000..3dd7704
--- /dev/null
+++ b/src/Pattern/Structural/Adapter/YamlReport.php
@@ -0,0 +1,28 @@
+ 'Apple iPhone 16 Pro Max 256GB Natural Titanium (MYWY3)',
+ 'price' => 62799,
+ 'count' => 2127,
+ ]
+ ], YAML_UTF8_ENCODING);
+ }
+}
diff --git a/src/Pattern/Structural/Adapter/YamlToPHPArrayReportAdapter.php b/src/Pattern/Structural/Adapter/YamlToPHPArrayReportAdapter.php
new file mode 100644
index 0000000..2a2433a
--- /dev/null
+++ b/src/Pattern/Structural/Adapter/YamlToPHPArrayReportAdapter.php
@@ -0,0 +1,23 @@
+report->emitYaml());
+ }
+}
diff --git a/src/helpers.php b/src/helpers.php
index 4c6d737..556836c 100644
--- a/src/helpers.php
+++ b/src/helpers.php
@@ -41,4 +41,4 @@ function trace(): string
function getFloatRange(): float
{
return (float)random_int(1000, 999999) / 100;
-}
\ No newline at end of file
+}
diff --git a/src/router.php b/src/router.php
new file mode 100644
index 0000000..ce9a53b
--- /dev/null
+++ b/src/router.php
@@ -0,0 +1,16 @@
+