From 6e1462e0c0a5d768e4037e8df3b1e1dca9fb5e36 Mon Sep 17 00:00:00 2001 From: Bernhard Schussek Date: Mon, 9 Jul 2012 18:15:56 +0200 Subject: [PATCH] [Form] Fixed PropertyPath handling of __get() method that returns a constant --- .../Component/Form/Tests/Util/PropertyPathTest.php | 12 ++++++++++++ src/Symfony/Component/Form/Util/PropertyPath.php | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Form/Tests/Util/PropertyPathTest.php b/src/Symfony/Component/Form/Tests/Util/PropertyPathTest.php index f231c24f45..b1830addd5 100644 --- a/src/Symfony/Component/Form/Tests/Util/PropertyPathTest.php +++ b/src/Symfony/Component/Form/Tests/Util/PropertyPathTest.php @@ -213,6 +213,18 @@ class PropertyPathTest extends \PHPUnit_Framework_TestCase $this->assertSame('foobar', $path->getValue($object)); } + /* + * https://github.com/symfony/symfony/pull/4450 + */ + public function testGetValueReadsMagicGetThatReturnsConstant() + { + $path = new PropertyPath('magicProperty'); + + $object = new Magician(); + + $this->assertNull($path->getValue($object)); + } + /** * @expectedException Symfony\Component\Form\Exception\PropertyAccessDeniedException */ diff --git a/src/Symfony/Component/Form/Util/PropertyPath.php b/src/Symfony/Component/Form/Util/PropertyPath.php index f97a5e343e..81b2242bb9 100644 --- a/src/Symfony/Component/Form/Util/PropertyPath.php +++ b/src/Symfony/Component/Form/Util/PropertyPath.php @@ -402,7 +402,7 @@ class PropertyPath implements \IteratorAggregate, PropertyPathInterface $result = $objectOrArray->$hasser(); } elseif ($reflClass->hasMethod('__get')) { // needed to support magic method __get - $result =& $objectOrArray->$property; + $result = $objectOrArray->$property; } elseif ($reflClass->hasProperty($property)) { if (!$reflClass->getProperty($property)->isPublic()) { throw new PropertyAccessDeniedException(sprintf('Property "%s" is not public in class "%s". Maybe you should create the method "%s()" or "%s()"?', $property, $reflClass->name, $getter, $isser));