63 lines
1.8 KiB
PHP
63 lines
1.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package: patterns
|
|
* @author: Yevhen Odynets
|
|
* @date: 2025-07-03
|
|
* @time: 21:21
|
|
*/
|
|
|
|
declare(strict_types = 1);
|
|
|
|
use Pattern\Structural\Adapter\JsonReport;
|
|
use Pattern\Structural\Adapter\JsonToPHPArrayReportAdapter;
|
|
use Pattern\Structural\Adapter\PHPArrayReport;
|
|
use Pattern\Structural\Adapter\PHPArrayReportInterfaceAdapter;
|
|
use Pattern\Structural\Adapter\SerializedReport;
|
|
use Pattern\Structural\Adapter\SerializedToPHPArrayReportAdapter;
|
|
use Pattern\Structural\Adapter\XMLReport;
|
|
use Pattern\Structural\Adapter\XMLToPHPArrayReportAdapter;
|
|
use Pattern\Structural\Adapter\YamlReport;
|
|
use Pattern\Structural\Adapter\YamlToPHPArrayReportAdapter;
|
|
|
|
$reports = [
|
|
// new YamlReport(),
|
|
new PHPArrayReport(),
|
|
new XMLReport(),
|
|
new SerializedReport(),
|
|
new JsonReport(),
|
|
];
|
|
|
|
function client(array $reports): void
|
|
{
|
|
foreach ($reports as $report) {
|
|
$adapter = null;
|
|
|
|
if ($report instanceof PHPArrayReport) {
|
|
$adapter = $report;
|
|
} elseif ($report instanceof JsonReport) {
|
|
$adapter = new JsonToPHPArrayReportAdapter($report);
|
|
} elseif ($report instanceof SerializedReport) {
|
|
$adapter = new SerializedToPHPArrayReportAdapter($report);
|
|
} elseif ($report instanceof XMLReport) {
|
|
$adapter = new XMLToPHPArrayReportAdapter($report);
|
|
} elseif ($report instanceof YamlReport) {
|
|
$adapter = new YamlToPHPArrayReportAdapter($report);
|
|
}
|
|
|
|
if (! is_null($adapter)) {
|
|
echo $adapter::class;
|
|
renderView($adapter);
|
|
}
|
|
}
|
|
}
|
|
|
|
function renderView(PHPArrayReportInterfaceAdapter $adapter): void
|
|
{
|
|
/** @noinspection ForgottenDebugOutputInspection */
|
|
dump($adapter->getData());
|
|
}
|
|
|
|
?><img class="diagram" src="/assets/img/diagrams/adapter.png" alt="Adapter DEsign Pattern Diagram"><?php
|
|
client($reports);
|