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()); +} + +?>Adapter DEsign Pattern Diagram Патерни - - - + + +
- +
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 @@ +