From 6aa190b2a6c61e1700a3375d4ed245774b8f111f Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 28 Sep 2010 22:19:17 +0200 Subject: [PATCH] [OutputEscaper] added SafeDecoratorInterface --- .../Component/OutputEscaper/Escaper.php | 12 +++++------ .../Component/OutputEscaper/SafeDecorator.php | 2 +- .../OutputEscaper/SafeDecoratorInterface.php | 21 +++++++++++++++++++ 3 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 src/Symfony/Component/OutputEscaper/SafeDecoratorInterface.php diff --git a/src/Symfony/Component/OutputEscaper/Escaper.php b/src/Symfony/Component/OutputEscaper/Escaper.php index 937dfb8a9840..be361b6d413d 100644 --- a/src/Symfony/Component/OutputEscaper/Escaper.php +++ b/src/Symfony/Component/OutputEscaper/Escaper.php @@ -118,18 +118,18 @@ static public function escape($escaper, $value) return $copy; } - if (self::isClassMarkedAsSafe(get_class($value))) { - // the class or one of its children is marked as safe - // return the unescaped object - return $value; - } - if ($value instanceof SafeDecorator) { // do not escape objects marked as safe // return the original object return $value->getValue(); } + if (self::isClassMarkedAsSafe(get_class($value)) || $value instanceof SafeDecoratorInterface) { + // the class or one of its children is marked as safe + // return the unescaped object + return $value; + } + if ($value instanceof \Traversable) { return new IteratorDecorator($escaper, $value); } diff --git a/src/Symfony/Component/OutputEscaper/SafeDecorator.php b/src/Symfony/Component/OutputEscaper/SafeDecorator.php index dd648049e5cc..16c281b672d4 100644 --- a/src/Symfony/Component/OutputEscaper/SafeDecorator.php +++ b/src/Symfony/Component/OutputEscaper/SafeDecorator.php @@ -16,7 +16,7 @@ * * @author Fabien Potencier */ -class SafeDecorator extends \ArrayIterator +class SafeDecorator extends \ArrayIterator implements SafeDecoratorInterface { protected $value; diff --git a/src/Symfony/Component/OutputEscaper/SafeDecoratorInterface.php b/src/Symfony/Component/OutputEscaper/SafeDecoratorInterface.php new file mode 100644 index 000000000000..34da85a13917 --- /dev/null +++ b/src/Symfony/Component/OutputEscaper/SafeDecoratorInterface.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Marks a class as being safe for output. + * + * @author Fabien Potencier + */ +interface SafeDecoratorInterface +{ +}