Skip to content

Commit 99d430b

Browse files
committed
MappedObject::isInitialized() removed as it can work only with public properties
1 parent 3537fdc commit 99d430b

File tree

4 files changed

+32
-24
lines changed

4 files changed

+32
-24
lines changed

docs/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1349,7 +1349,7 @@ $input->optional; // true
13491349
### No fields are required
13501350

13511351
We can make all fields optional. This is useful for partial updates, like PATCH requests in REST APIs. Only changed
1352-
fields are sent, and we have to check which ones are available with `$mappedObject->isInitialized('property');`.
1352+
fields are sent, and we have to check which ones are available with reflection.
13531353

13541354
Unlike with default mode, mapped object are not auto-initialized as described
13551355
under [mapped object rule](#mappedobject-rule). At least empty array (`[]`) should be sent to initialize them.
@@ -1367,9 +1367,9 @@ $options->setRequiredFields(RequiredFields::none());
13671367
$input = $processor->process($data, ModesExampleInput::class, $options);
13681368
// $input == ModesExampleInput(required: __UNSET__, optional: __UNSET__)
13691369

1370-
$input->isInitialized('required'); // false
1370+
(new ReflectionProperty($input, 'required'))->isInitialized($input); // false
13711371
$input->required; // Error, property is not set
1372-
$input->isInitialized('optional'); // false
1372+
(new ReflectionProperty($input, 'optional'))->isInitialized($input); // false
13731373
$input->optional; // Error, property is not set
13741374
```
13751375

src/MappedObject.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@
1212
abstract class MappedObject
1313
{
1414

15-
public function isInitialized(string $property): bool
16-
{
17-
return (new ReflectionProperty($this, $property))->isInitialized($this);
18-
}
19-
2015
/**
2116
* Checks if the public non-static property exists.
2217
*/

tests/Unit/Processing/DefaultObjectCreatorTest.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
use ArgumentCountError;
66
use Orisai\Exceptions\Logic\InvalidState;
7+
use Orisai\ObjectMapper\MappedObject;
78
use Orisai\ObjectMapper\Processing\DefaultObjectCreator;
89
use PHPUnit\Framework\TestCase;
10+
use ReflectionProperty;
911
use Tests\Orisai\ObjectMapper\Doubles\ConstructorUsingVO;
1012
use Tests\Orisai\ObjectMapper\Doubles\DependentVO;
1113
use Tests\Orisai\ObjectMapper\Doubles\EmptyVO;
@@ -54,7 +56,7 @@ public function testRuntimeFailure(): void
5456
public function testDontUseConstructor(): void
5557
{
5658
$vo = new ConstructorUsingVO('string');
57-
self::assertTrue($vo->isInitialized('string'));
59+
self::assertTrue($this->isInitialized($vo, 'string'));
5860
self::assertSame('string', $vo->string);
5961

6062
$creator = new DefaultObjectCreator();
@@ -63,7 +65,12 @@ public function testDontUseConstructor(): void
6365
$creator->checkClassIsInstantiable(EmptyVO::class, true);
6466

6567
$vo = $creator->createInstance(ConstructorUsingVO::class, false);
66-
self::assertFalse($vo->isInitialized('string'));
68+
self::assertFalse($this->isInitialized($vo, 'string'));
69+
}
70+
71+
private function isInitialized(MappedObject $object, string $property): bool
72+
{
73+
return (new ReflectionProperty($object, $property))->isInitialized($object);
6774
}
6875

6976
}

tests/Unit/Processing/DefaultProcessorTest.php

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Orisai\ObjectMapper\Printers\TypeToStringConverter;
1414
use Orisai\ObjectMapper\Processing\Options;
1515
use Orisai\ObjectMapper\Processing\RequiredFields;
16+
use ReflectionProperty;
1617
use stdClass;
1718
use Tests\Orisai\ObjectMapper\Doubles\AfterClassCallbackCurrentTypeInvalidDataVO;
1819
use Tests\Orisai\ObjectMapper\Doubles\AfterClassCallbackNewTypeInvalidDataVO;
@@ -759,9 +760,9 @@ public function testRequiredNonDefaultFields(): void
759760
'required' => null,
760761
], PropertiesInitVO::class, $options);
761762

762-
self::assertTrue($vo->isInitialized('required'));
763-
self::assertTrue($vo->isInitialized('optional'));
764-
self::assertTrue($vo->isInitialized('structure'));
763+
self::assertTrue($this->isInitialized($vo, 'required'));
764+
self::assertTrue($this->isInitialized($vo, 'optional'));
765+
self::assertTrue($this->isInitialized($vo, 'structure'));
765766

766767
self::assertNull($vo->required);
767768
self::assertNull($vo->optional);
@@ -779,9 +780,9 @@ public function testRequireAllFields(): void
779780
'structure' => [],
780781
], PropertiesInitVO::class, $options);
781782

782-
self::assertTrue($vo->isInitialized('required'));
783-
self::assertTrue($vo->isInitialized('optional'));
784-
self::assertTrue($vo->isInitialized('structure'));
783+
self::assertTrue($this->isInitialized($vo, 'required'));
784+
self::assertTrue($this->isInitialized($vo, 'optional'));
785+
self::assertTrue($this->isInitialized($vo, 'structure'));
785786

786787
self::assertNull($vo->required);
787788
self::assertNull($vo->optional);
@@ -824,19 +825,19 @@ public function testRequireNoneFields(): void
824825

825826
$vo = $this->processor->process([], PropertiesInitVO::class, $options);
826827

827-
self::assertFalse($vo->isInitialized('required'));
828-
self::assertFalse($vo->isInitialized('optional'));
829-
self::assertFalse($vo->isInitialized('structure'));
828+
self::assertFalse($this->isInitialized($vo, 'required'));
829+
self::assertFalse($this->isInitialized($vo, 'optional'));
830+
self::assertFalse($this->isInitialized($vo, 'structure'));
830831

831832
$vo = $this->processor->process([
832833
'required' => null,
833834
'optional' => null,
834835
'structure' => [],
835836
], PropertiesInitVO::class, $options);
836837

837-
self::assertTrue($vo->isInitialized('required'));
838-
self::assertTrue($vo->isInitialized('optional'));
839-
self::assertTrue($vo->isInitialized('structure'));
838+
self::assertTrue($this->isInitialized($vo, 'required'));
839+
self::assertTrue($this->isInitialized($vo, 'optional'));
840+
self::assertTrue($this->isInitialized($vo, 'structure'));
840841

841842
self::assertNull($vo->required);
842843
self::assertNull($vo->optional);
@@ -869,8 +870,8 @@ public function testSkipped(): void
869870

870871
self::assertSame('required', $vo->required);
871872
self::assertSame('optional', $vo->optional);
872-
self::assertFalse($vo->isInitialized('requiredSkipped'));
873-
self::assertFalse($vo->isInitialized('optionalSkipped'));
873+
self::assertFalse($this->isInitialized($vo, 'requiredSkipped'));
874+
self::assertFalse($this->isInitialized($vo, 'optionalSkipped'));
874875

875876
$this->processor->processSkippedProperties([
876877
'requiredSkipped',
@@ -999,4 +1000,9 @@ public function testAttributes(): void
9991000
self::assertSame('foo', $vo->string);
10001001
}
10011002

1003+
private function isInitialized(MappedObject $object, string $property): bool
1004+
{
1005+
return (new ReflectionProperty($object, $property))->isInitialized($object);
1006+
}
1007+
10021008
}

0 commit comments

Comments
 (0)