convert object to string if possible instead of using var_export directly

This commit is contained in:
Besnik Br 2013-09-14 16:08:13 +02:00 committed by Fabien Potencier
parent f4f6b06048
commit 6cf5e0812e
9 changed files with 41 additions and 4 deletions

View File

@ -60,6 +60,10 @@ abstract class AbstractComparisonValidator extends ConstraintValidator
*/ */
private function valueToString($value) private function valueToString($value)
{ {
if (is_object($value) && method_exists($value, '__toString')) {
return (string) $value;
}
if ($value instanceof \DateTime) { if ($value instanceof \DateTime) {
return $value->format('Y-m-d H:i:s'); return $value->format('Y-m-d H:i:s');
} }

View File

@ -14,6 +14,21 @@ namespace Symfony\Component\Validator\Tests\Constraints;
use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Constraints\AbstractComparisonValidator; use Symfony\Component\Validator\Constraints\AbstractComparisonValidator;
class ComparisonTest_Class
{
protected $value;
public function __construct($value)
{
$this->value = $value;
}
public function __toString()
{
return (string) $this->value;
}
}
/** /**
* @author Daniel Holmes <daniel@danielholmes.org> * @author Daniel Holmes <daniel@danielholmes.org>
*/ */

View File

@ -40,6 +40,7 @@ class EqualToValidatorTest extends AbstractComparisonValidatorTestCase
array(3, '3'), array(3, '3'),
array('a', 'a'), array('a', 'a'),
array(new \DateTime('2000-01-01'), new \DateTime('2000-01-01')), array(new \DateTime('2000-01-01'), new \DateTime('2000-01-01')),
array(new ComparisonTest_Class(5), new ComparisonTest_Class(5)),
array(null, 1), array(null, 1),
); );
} }
@ -52,7 +53,8 @@ class EqualToValidatorTest extends AbstractComparisonValidatorTestCase
return array( return array(
array(1, 2, '2', 'integer'), array(1, 2, '2', 'integer'),
array('22', '333', "'333'", 'string'), array('22', '333', "'333'", 'string'),
array(new \DateTime('2001-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime') array(new \DateTime('2001-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime'),
array(new ComparisonTest_Class(4), new ComparisonTest_Class(5), '5', __NAMESPACE__.'\ComparisonTest_Class'),
); );
} }
} }

View File

@ -37,6 +37,7 @@ class GreaterThanValidatorTest extends AbstractComparisonValidatorTestCase
return array( return array(
array(2, 1), array(2, 1),
array(new \DateTime('2005/01/01'), new \DateTime('2001/01/01')), array(new \DateTime('2005/01/01'), new \DateTime('2001/01/01')),
array(new ComparisonTest_Class(5), new ComparisonTest_Class(4)),
array('333', '22'), array('333', '22'),
array(null, 1), array(null, 1),
); );
@ -52,6 +53,8 @@ class GreaterThanValidatorTest extends AbstractComparisonValidatorTestCase
array(2, 2, '2', 'integer'), array(2, 2, '2', 'integer'),
array(new \DateTime('2000/01/01'), new \DateTime('2005/01/01'), '2005-01-01 00:00:00', 'DateTime'), array(new \DateTime('2000/01/01'), new \DateTime('2005/01/01'), '2005-01-01 00:00:00', 'DateTime'),
array(new \DateTime('2000/01/01'), new \DateTime('2000/01/01'), '2000-01-01 00:00:00', 'DateTime'), array(new \DateTime('2000/01/01'), new \DateTime('2000/01/01'), '2000-01-01 00:00:00', 'DateTime'),
array(new ComparisonTest_Class(4), new ComparisonTest_Class(5), '5', __NAMESPACE__.'\ComparisonTest_Class'),
array(new ComparisonTest_Class(5), new ComparisonTest_Class(5), '5', __NAMESPACE__.'\ComparisonTest_Class'),
array('22', '333', "'333'", 'string'), array('22', '333', "'333'", 'string'),
array('22', '22', "'22'", 'string') array('22', '22', "'22'", 'string')
); );

View File

@ -36,11 +36,13 @@ class IdenticalToValidatorTest extends AbstractComparisonValidatorTestCase
public function provideValidComparisons() public function provideValidComparisons()
{ {
$date = new \DateTime('2000-01-01'); $date = new \DateTime('2000-01-01');
$object = new ComparisonTest_Class(2);
return array( return array(
array(3, 3), array(3, 3),
array('a', 'a'), array('a', 'a'),
array($date, $date), array($date, $date),
array($object, $object),
array(null, 1), array(null, 1),
); );
} }
@ -55,7 +57,8 @@ class IdenticalToValidatorTest extends AbstractComparisonValidatorTestCase
array(2, '2', "'2'", 'string'), array(2, '2', "'2'", 'string'),
array('22', '333', "'333'", 'string'), array('22', '333', "'333'", 'string'),
array(new \DateTime('2001-01-01'), new \DateTime('2001-01-01'), '2001-01-01 00:00:00', 'DateTime'), array(new \DateTime('2001-01-01'), new \DateTime('2001-01-01'), '2001-01-01 00:00:00', 'DateTime'),
array(new \DateTime('2001-01-01'), new \DateTime('1999-01-01'), '1999-01-01 00:00:00', 'DateTime') array(new \DateTime('2001-01-01'), new \DateTime('1999-01-01'), '1999-01-01 00:00:00', 'DateTime'),
array(new ComparisonTest_Class(4), new ComparisonTest_Class(5), '5', __NAMESPACE__.'\ComparisonTest_Class'),
); );
} }
} }

View File

@ -39,6 +39,8 @@ class LessThanOrEqualValidatorTest extends AbstractComparisonValidatorTestCase
array(1, 1), array(1, 1),
array(new \DateTime('2000-01-01'), new \DateTime('2000-01-01')), array(new \DateTime('2000-01-01'), new \DateTime('2000-01-01')),
array(new \DateTime('2000-01-01'), new \DateTime('2020-01-01')), array(new \DateTime('2000-01-01'), new \DateTime('2020-01-01')),
array(new ComparisonTest_Class(4), new ComparisonTest_Class(5)),
array(new ComparisonTest_Class(5), new ComparisonTest_Class(5)),
array('a', 'a'), array('a', 'a'),
array('a', 'z'), array('a', 'z'),
array(null, 1), array(null, 1),
@ -53,6 +55,7 @@ class LessThanOrEqualValidatorTest extends AbstractComparisonValidatorTestCase
return array( return array(
array(2, 1, '1', 'integer'), array(2, 1, '1', 'integer'),
array(new \DateTime('2010-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime'), array(new \DateTime('2010-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime'),
array(new ComparisonTest_Class(5), new ComparisonTest_Class(4), '4', __NAMESPACE__.'\ComparisonTest_Class'),
array('c', 'b', "'b'", 'string') array('c', 'b', "'b'", 'string')
); );
} }

View File

@ -37,6 +37,7 @@ class LessThanValidatorTest extends AbstractComparisonValidatorTestCase
return array( return array(
array(1, 2), array(1, 2),
array(new \DateTime('2000-01-01'), new \DateTime('2010-01-01')), array(new \DateTime('2000-01-01'), new \DateTime('2010-01-01')),
array(new ComparisonTest_Class(4), new ComparisonTest_Class(5)),
array('22', '333'), array('22', '333'),
array(null, 1), array(null, 1),
); );
@ -52,6 +53,8 @@ class LessThanValidatorTest extends AbstractComparisonValidatorTestCase
array(2, 2, '2', 'integer'), array(2, 2, '2', 'integer'),
array(new \DateTime('2010-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime'), array(new \DateTime('2010-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime'),
array(new \DateTime('2000-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime'), array(new \DateTime('2000-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime'),
array(new ComparisonTest_Class(5), new ComparisonTest_Class(5), '5', __NAMESPACE__.'\ComparisonTest_Class'),
array(new ComparisonTest_Class(6), new ComparisonTest_Class(5), '5', __NAMESPACE__.'\ComparisonTest_Class'),
array('333', '22', "'22'", 'string') array('333', '22', "'22'", 'string')
); );
} }

View File

@ -39,6 +39,7 @@ class NotEqualToValidatorTest extends AbstractComparisonValidatorTestCase
array(1, 2), array(1, 2),
array('22', '333'), array('22', '333'),
array(new \DateTime('2001-01-01'), new \DateTime('2000-01-01')), array(new \DateTime('2001-01-01'), new \DateTime('2000-01-01')),
array(new ComparisonTest_Class(6), new ComparisonTest_Class(5)),
array(null, 1), array(null, 1),
); );
} }
@ -52,7 +53,8 @@ class NotEqualToValidatorTest extends AbstractComparisonValidatorTestCase
array(3, 3, '3', 'integer'), array(3, 3, '3', 'integer'),
array('2', 2, '2', 'integer'), array('2', 2, '2', 'integer'),
array('a', 'a', "'a'", 'string'), array('a', 'a', "'a'", 'string'),
array(new \DateTime('2000-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime') array(new \DateTime('2000-01-01'), new \DateTime('2000-01-01'), '2000-01-01 00:00:00', 'DateTime'),
array(new ComparisonTest_Class(5), new ComparisonTest_Class(5), '5', __NAMESPACE__.'\ComparisonTest_Class'),
); );
} }
} }

View File

@ -51,11 +51,13 @@ class NotIdenticalToValidatorTest extends AbstractComparisonValidatorTestCase
public function provideInvalidComparisons() public function provideInvalidComparisons()
{ {
$date = new \DateTime('2000-01-01'); $date = new \DateTime('2000-01-01');
$object = new ComparisonTest_Class(2);
return array( return array(
array(3, 3, '3', 'integer'), array(3, 3, '3', 'integer'),
array('a', 'a', "'a'", 'string'), array('a', 'a', "'a'", 'string'),
array($date, $date, '2000-01-01 00:00:00', 'DateTime') array($date, $date, '2000-01-01 00:00:00', 'DateTime'),
array($object, $object, '2', __NAMESPACE__.'\ComparisonTest_Class'),
); );
} }
} }