Skip to content

Commit

Permalink
feature #23617 [PropertyInfo] Add hassers for accessors prefixes (seb…
Browse files Browse the repository at this point in the history
…dec)

This PR was submitted for the 3.3 branch but it was squashed and merged into the 4.1-dev branch instead (closes #23617).

Discussion
----------

[PropertyInfo] Add hassers for accessors prefixes

| Q             | A
| ------------- | ---
| Branch?       | 3.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | None
| License       | MIT
| Doc PR        | -

In the component PropertyInfo
In the class ReflectionExtractor Add hassers in the accessors prefixes

Because I think it's common to have readable properties with method like this:
hasChildren()

Commits
-------

03bce5e [PropertyInfo] Add hassers for accessors prefixes
  • Loading branch information
fabpot committed Feb 7, 2018
2 parents c44a894 + 03bce5e commit 89d1b65
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 5 deletions.
Expand Up @@ -34,7 +34,7 @@ class ReflectionExtractor implements PropertyListExtractorInterface, PropertyTyp
/**
* @internal
*/
public static $defaultAccessorPrefixes = array('is', 'can', 'get');
public static $defaultAccessorPrefixes = array('is', 'can', 'get', 'has');

/**
* @internal
Expand Down Expand Up @@ -178,7 +178,7 @@ private function extractFromAccessor(string $class, string $property): ?array
return array($this->extractFromReflectionType($reflectionType));
}

if (in_array($prefix, array('is', 'can'))) {
if (in_array($prefix, array('is', 'can', 'has'))) {
return array(new Type(Type::BUILTIN_TYPE_BOOL));
}

Expand Down
Expand Up @@ -88,7 +88,8 @@ public function typesProvider()
array('d', array(new Type(Type::BUILTIN_TYPE_BOOL)), null, null),
array('e', array(new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_RESOURCE))), null, null),
array('f', array(new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTime'))), null, null),
array('g', array(new Type(Type::BUILTIN_TYPE_ARRAY, true, null, true)), 'Nullable array.', null),
array('g', array(new Type(Type::BUILTIN_TYPE_BOOL, true)), null, null),
array('array', array(new Type(Type::BUILTIN_TYPE_ARRAY, true, null, true)), 'Nullable array.', null),
array('donotexist', null, null, null),
array('staticGetter', null, null, null),
array('staticSetter', null, null, null),
Expand Down
Expand Up @@ -40,7 +40,7 @@ public function testGetProperties()
'collection',
'B',
'Guid',
'g',
'array',
'emptyVar',
'foo',
'foo2',
Expand All @@ -56,6 +56,7 @@ public function testGetProperties()
'd',
'e',
'f',
'g',
),
$this->extractor->getProperties('Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy')
);
Expand Down Expand Up @@ -196,10 +197,12 @@ public function getReadableProperties()
array('d', true),
array('e', false),
array('f', false),
array('g', true),
array('Id', true),
array('id', true),
array('Guid', true),
array('guid', false),
array('guid', false),
);
}

Expand All @@ -226,6 +229,7 @@ public function getWritableProperties()
array('d', false),
array('e', true),
array('f', true),
array('g', false),
array('Id', false),
array('Guid', true),
array('guid', false),
Expand Down
Expand Up @@ -66,7 +66,7 @@ class Dummy extends ParentDummy
*
* @var array|null
*/
public $g;
public $array;

/**
* This should not be removed.
Expand Down
Expand Up @@ -75,4 +75,11 @@ public function addE($e)
public function removeF(\DateTime $f)
{
}

/**
* @return bool|null
*/
public function hasG()
{
}
}

0 comments on commit 89d1b65

Please sign in to comment.