diff --git a/src/Symfony/Component/OutputEscaper/Escaper.php b/src/Symfony/Component/OutputEscaper/Escaper.php index 937dfb8a98..be361b6d41 100644 --- a/src/Symfony/Component/OutputEscaper/Escaper.php +++ b/src/Symfony/Component/OutputEscaper/Escaper.php @@ -118,18 +118,18 @@ abstract class Escaper 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 dd648049e5..16c281b672 100644 --- a/src/Symfony/Component/OutputEscaper/SafeDecorator.php +++ b/src/Symfony/Component/OutputEscaper/SafeDecorator.php @@ -16,7 +16,7 @@ namespace Symfony\Component\OutputEscaper; * * @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 0000000000..34da85a139 --- /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 +{ +}