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)
{
if (is_object($value) && method_exists($value, '__toString')) {
return (string) $value;
}
if ($value instanceof \DateTime) {
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\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>
*/

View File

@ -40,6 +40,7 @@ class EqualToValidatorTest extends AbstractComparisonValidatorTestCase
array(3, '3'),
array('a', 'a'),
array(new \DateTime('2000-01-01'), new \DateTime('2000-01-01')),
array(new ComparisonTest_Class(5), new ComparisonTest_Class(5)),
array(null, 1),
);
}
@ -52,7 +53,8 @@ class EqualToValidatorTest extends AbstractComparisonValidatorTestCase
return array(
array(1, 2, '2', 'integer'),
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(
array(2, 1),
array(new \DateTime('2005/01/01'), new \DateTime('2001/01/01')),
array(new ComparisonTest_Class(5), new ComparisonTest_Class(4)),
array('333', '22'),
array(null, 1),
);
@ -52,6 +53,8 @@ class GreaterThanValidatorTest extends AbstractComparisonValidatorTestCase
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('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', '22', "'22'", 'string')
);

View File

@ -36,11 +36,13 @@ class IdenticalToValidatorTest extends AbstractComparisonValidatorTestCase
public function provideValidComparisons()
{
$date = new \DateTime('2000-01-01');
$object = new ComparisonTest_Class(2);
return array(
array(3, 3),
array('a', 'a'),
array($date, $date),
array($object, $object),
array(null, 1),
);
}
@ -55,7 +57,8 @@ class IdenticalToValidatorTest extends AbstractComparisonValidatorTestCase
array(2, '2', "'2'", '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('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(new \DateTime('2000-01-01'), new \DateTime('2000-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', 'z'),
array(null, 1),
@ -53,6 +55,7 @@ class LessThanOrEqualValidatorTest extends AbstractComparisonValidatorTestCase
return array(
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 ComparisonTest_Class(5), new ComparisonTest_Class(4), '4', __NAMESPACE__.'\ComparisonTest_Class'),
array('c', 'b', "'b'", 'string')
);
}

View File

@ -37,6 +37,7 @@ class LessThanValidatorTest extends AbstractComparisonValidatorTestCase
return array(
array(1, 2),
array(new \DateTime('2000-01-01'), new \DateTime('2010-01-01')),
array(new ComparisonTest_Class(4), new ComparisonTest_Class(5)),
array('22', '333'),
array(null, 1),
);
@ -52,6 +53,8 @@ class LessThanValidatorTest extends AbstractComparisonValidatorTestCase
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('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')
);
}

View File

@ -39,6 +39,7 @@ class NotEqualToValidatorTest extends AbstractComparisonValidatorTestCase
array(1, 2),
array('22', '333'),
array(new \DateTime('2001-01-01'), new \DateTime('2000-01-01')),
array(new ComparisonTest_Class(6), new ComparisonTest_Class(5)),
array(null, 1),
);
}
@ -52,7 +53,8 @@ class NotEqualToValidatorTest extends AbstractComparisonValidatorTestCase
array(3, 3, '3', 'integer'),
array('2', 2, '2', 'integer'),
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()
{
$date = new \DateTime('2000-01-01');
$object = new ComparisonTest_Class(2);
return array(
array(3, 3, '3', 'integer'),
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'),
);
}
}