Skip to content

Commit

Permalink
Pass Exporter to ObjectExporter::export()
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastianbergmann committed Mar 29, 2024
1 parent 14a035b commit db75879
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/Exporter.php
Expand Up @@ -345,7 +345,7 @@ private function exportObject(object $value, RecursionContext $processed, string
$processed->add($value);

if ($this->objectExporter !== null && $this->objectExporter->handles($value)) {
$buffer = $this->objectExporter->export($value);
$buffer = $this->objectExporter->export($value, $this);
} else {
$buffer = $this->defaultObjectExport($value, $processed, $whitespace, $indentation);
}
Expand Down
2 changes: 1 addition & 1 deletion src/ObjectExporter.php
Expand Up @@ -13,5 +13,5 @@ interface ObjectExporter
{
public function handles(object $object): bool;

public function export(object $object): string;
public function export(object $object, Exporter $exporter): string;
}
8 changes: 4 additions & 4 deletions src/ObjectExporterChain.php
Expand Up @@ -38,11 +38,11 @@ public function handles(object $object): bool
/**
* @throws ObjectNotSupportedException
*/
public function export(object $object): string
public function export(object $object, Exporter $exporter): string
{
foreach ($this->exporter as $exporter) {
if ($exporter->handles($object)) {
return $exporter->export($object);
foreach ($this->exporter as $objectExporter) {
if ($objectExporter->handles($object)) {
return $objectExporter->export($object, $exporter);
}
}

Expand Down
6 changes: 4 additions & 2 deletions tests/ObjectExporterChainTest.php
Expand Up @@ -11,10 +11,12 @@

use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Small;
use PHPUnit\Framework\Attributes\UsesClass;
use PHPUnit\Framework\TestCase;
use stdClass;

#[CoversClass(ObjectExporterChain::class)]
#[UsesClass(Exporter::class)]
#[Small]
final class ObjectExporterChainTest extends TestCase
{
Expand Down Expand Up @@ -45,7 +47,7 @@ public function testDelegatesExportingToFirstExporterThatHandlesAnObject(): void

$chain = new ObjectExporterChain([$firstExporter, $secondExporter]);

$this->assertSame('string', $chain->export(new stdClass));
$this->assertSame('string', $chain->export(new stdClass, new Exporter));
}

public function testCannotExportObjectWhenNoExporterHandlesIt(): void
Expand All @@ -57,6 +59,6 @@ public function testCannotExportObjectWhenNoExporterHandlesIt(): void

$this->expectException(ObjectNotSupportedException::class);

$this->assertSame('string', $chain->export(new stdClass));
$this->assertSame('string', $chain->export(new stdClass, new Exporter));
}
}

0 comments on commit db75879

Please sign in to comment.