feature #23617 [PropertyInfo] Add hassers for accessors prefixes (sebdec)
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
-------
03bce5e50c
[PropertyInfo] Add hassers for accessors prefixes
This commit is contained in:
commit
89d1b65037
@ -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
|
||||
@ -178,7 +178,7 @@ class ReflectionExtractor implements PropertyListExtractorInterface, PropertyTyp
|
||||
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));
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,8 @@ class PhpDocExtractorTest extends TestCase
|
||||
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),
|
||||
|
@ -40,7 +40,7 @@ class ReflectionExtractorTest extends TestCase
|
||||
'collection',
|
||||
'B',
|
||||
'Guid',
|
||||
'g',
|
||||
'array',
|
||||
'emptyVar',
|
||||
'foo',
|
||||
'foo2',
|
||||
@ -56,6 +56,7 @@ class ReflectionExtractorTest extends TestCase
|
||||
'd',
|
||||
'e',
|
||||
'f',
|
||||
'g',
|
||||
),
|
||||
$this->extractor->getProperties('Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy')
|
||||
);
|
||||
@ -196,10 +197,12 @@ class ReflectionExtractorTest extends TestCase
|
||||
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),
|
||||
);
|
||||
}
|
||||
|
||||
@ -226,6 +229,7 @@ class ReflectionExtractorTest extends TestCase
|
||||
array('d', false),
|
||||
array('e', true),
|
||||
array('f', true),
|
||||
array('g', false),
|
||||
array('Id', false),
|
||||
array('Guid', true),
|
||||
array('guid', false),
|
||||
|
@ -66,7 +66,7 @@ class Dummy extends ParentDummy
|
||||
*
|
||||
* @var array|null
|
||||
*/
|
||||
public $g;
|
||||
public $array;
|
||||
|
||||
/**
|
||||
* This should not be removed.
|
||||
|
@ -75,4 +75,11 @@ class ParentDummy
|
||||
public function removeF(\DateTime $f)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool|null
|
||||
*/
|
||||
public function hasG()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user