From f092c7f704aa79ad5bc9056df789c22c8b15f850 Mon Sep 17 00:00:00 2001 From: Bernhard Schussek Date: Tue, 23 Apr 2013 13:40:14 +0200 Subject: [PATCH] [FrameworkBundle] Improved TemplateNameParser performance --- .../Templating/TemplateNameParser.php | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateNameParser.php b/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateNameParser.php index 4eeda1d857..ef2ae08008 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateNameParser.php +++ b/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateNameParser.php @@ -56,19 +56,11 @@ class TemplateNameParser implements TemplateNameParserInterface throw new \RuntimeException(sprintf('Template name "%s" contains invalid characters.', $name)); } - $parts = explode(':', $name); - if (3 !== count($parts)) { + if (!preg_match('/^([^:]*):([^:]*):(.+)\.([^\.]+)\.([^\.]+)$/', $name, $matches)) { throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid (format is "bundle:section:template.format.engine").', $name)); } - $elements = explode('.', $parts[2]); - if (3 > count($elements)) { - throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid (format is "bundle:section:template.format.engine").', $name)); - } - $engine = array_pop($elements); - $format = array_pop($elements); - - $template = new TemplateReference($parts[0], $parts[1], implode('.', $elements), $format, $engine); + $template = new TemplateReference($matches[1], $matches[2], $matches[3], $matches[4], $matches[5]); if ($template->get('bundle')) { try {