Skip to content

Commit 97d32ae

Browse files
committed
Restore ValueObjectVisitorDispatcher.php
out of scope
1 parent b3f0c11 commit 97d32ae

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace App\Rest\Output;
4+
5+
use Ibexa\Contracts\Rest\Output\Generator;
6+
use Ibexa\Contracts\Rest\Output\ValueObjectVisitorDispatcher as BaseValueObjectVisitorDispatcher;
7+
use Ibexa\Contracts\Rest\Output\Visitor;
8+
9+
class ValueObjectVisitorDispatcher // extends BaseValueObjectVisitorDispatcher TODO: Rewrite this example in https://issues.ibexa.co/browse/IBX-8190
10+
{
11+
private array $visitors;
12+
13+
private BaseValueObjectVisitorDispatcher $valueObjectVisitorDispatcher;
14+
15+
private Visitor $outputVisitor;
16+
17+
private Generator $outputGenerator;
18+
19+
public function __construct(iterable $visitors, BaseValueObjectVisitorDispatcher $valueObjectVisitorDispatcher)
20+
{
21+
$this->visitors = [];
22+
foreach ($visitors as $type => $visitor) {
23+
$this->visitors[$type] = $visitor;
24+
}
25+
$this->valueObjectVisitorDispatcher = $valueObjectVisitorDispatcher;
26+
}
27+
28+
public function setOutputVisitor(Visitor $outputVisitor): void
29+
{
30+
$this->outputVisitor = $outputVisitor;
31+
$this->valueObjectVisitorDispatcher->setOutputVisitor($outputVisitor);
32+
}
33+
34+
public function setOutputGenerator(Generator $outputGenerator): void
35+
{
36+
$this->outputGenerator = $outputGenerator;
37+
$this->valueObjectVisitorDispatcher->setOutputGenerator($outputGenerator);
38+
}
39+
40+
public function visit($data)
41+
{
42+
$className = get_class($data);
43+
if (isset($this->visitors[$className])) {
44+
return $this->visitors[$className]->visit($this->outputVisitor, $this->outputGenerator, $data);
45+
}
46+
47+
return $this->valueObjectVisitorDispatcher->visit($data);
48+
}
49+
}

0 commit comments

Comments
 (0)