Skip to content

Commit c6107c3

Browse files
authored
Merge pull request #720 from Kocal/re-add-isser-support
fix(field-resolver): re-add support for isser methods
2 parents b67a833 + be3df0f commit c6107c3

File tree

4 files changed

+13
-1
lines changed

4 files changed

+13
-1
lines changed

UPGRADE-0.13.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ The new `default_field_resolver` config entry accepts callable service id.
2323
Stop using internally `symfony/property-access` package
2424
since it was a bottleneck to performance for large schema.
2525

26-
Array access and camelize getter are supported but isser, hasser,
26+
Array access and camelize getter/isser are supported but hasser,
2727
jQuery style (e.g. `last()`) and "can" property accessors
2828
are no more supported out-of-the-box,
2929
please implement a custom resolver if these accessors are needed.

src/Resolver/FieldResolver.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public static function valueFromObjectOrArray($objectOrArray, $fieldName)
2424
} elseif (\is_object($objectOrArray)) {
2525
if (null !== $getter = self::guessObjectMethod($objectOrArray, $fieldName, 'get')) {
2626
$value = $objectOrArray->$getter();
27+
} elseif (null !== $getter = self::guessObjectMethod($objectOrArray, $fieldName, 'is')) {
28+
$value = $objectOrArray->$getter();
2729
} elseif (isset($objectOrArray->$fieldName)) {
2830
$value = $objectOrArray->$fieldName;
2931
}

tests/Resolver/ResolverFieldTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public function resolverProvider()
3838
['private_property_with_getter2', $object, Toto::PRIVATE_PROPERTY_WITH_GETTER2_VALUE],
3939
['not_object_or_array', 'String', null],
4040
['name', $object, $object->name],
41+
['enabled', $object, $object->isEnabled()],
4142
];
4243
}
4344
}

tests/Resolver/Toto.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class Toto
1414
private $privatePropertyWithGetter = self::PRIVATE_PROPERTY_WITH_GETTER_VALUE;
1515
private $private_property_with_getter2 = self::PRIVATE_PROPERTY_WITH_GETTER2_VALUE;
1616
public $name = 'public';
17+
private $enabled = true;
1718

1819
/**
1920
* @return string
@@ -42,4 +43,12 @@ public function resolve()
4243
{
4344
return \func_get_args();
4445
}
46+
47+
/**
48+
* @return bool
49+
*/
50+
public function isEnabled()
51+
{
52+
return $this->enabled;
53+
}
4554
}

0 commit comments

Comments
 (0)