[PropertyAccess] Improve message of unitialized property in php 7.4
This commit is contained in:
parent
5da141b8d0
commit
3c8bf2d29d
@ -505,7 +505,7 @@ class PropertyAccessor implements PropertyAccessorInterface
|
|||||||
if (\PHP_VERSION_ID >= 70400 && preg_match('/^Typed property ([\w\\\]+)::\$(\w+) must not be accessed before initialization$/', $e->getMessage(), $matches)) {
|
if (\PHP_VERSION_ID >= 70400 && preg_match('/^Typed property ([\w\\\]+)::\$(\w+) must not be accessed before initialization$/', $e->getMessage(), $matches)) {
|
||||||
$r = new \ReflectionProperty($matches[1], $matches[2]);
|
$r = new \ReflectionProperty($matches[1], $matches[2]);
|
||||||
|
|
||||||
throw new AccessException(sprintf('The property "%s::$%s" is not readable because it is typed "%3$s". You should either initialize it or make it nullable using "?%3$s" instead.', $r->getDeclaringClass()->getName(), $r->getName(), $r->getType()->getName()), 0, $e);
|
throw new AccessException(sprintf('The property "%s::$%s" is not readable because it is typed "%2$s". You should initialize it or declare a default value instead.', $r->getDeclaringClass()->getName(), $r->getType()->getName()), 0, $e);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw $e;
|
throw $e;
|
||||||
|
@ -126,7 +126,7 @@ class PropertyAccessorTest extends TestCase
|
|||||||
public function testGetValueThrowsExceptionIfUninitializedProperty()
|
public function testGetValueThrowsExceptionIfUninitializedProperty()
|
||||||
{
|
{
|
||||||
$this->expectException('Symfony\Component\PropertyAccess\Exception\AccessException');
|
$this->expectException('Symfony\Component\PropertyAccess\Exception\AccessException');
|
||||||
$this->expectExceptionMessage('The property "Symfony\Component\PropertyAccess\Tests\Fixtures\UninitializedProperty::$uninitialized" is not readable because it is typed "string". You should either initialize it or make it nullable using "?string" instead.');
|
$this->expectExceptionMessage('The property "Symfony\Component\PropertyAccess\Tests\Fixtures\UninitializedProperty::$uninitialized" is not readable because it is typed "string". You should initialize it or declare a default value instead.');
|
||||||
|
|
||||||
$this->propertyAccessor->getValue(new UninitializedProperty(), 'uninitialized');
|
$this->propertyAccessor->getValue(new UninitializedProperty(), 'uninitialized');
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user