Skip to content

Commit 686d703

Browse files
committed
[FrameworkBundle] Improved TemplateNameParser performance
1 parent d72edc8 commit 686d703

File tree

1 file changed

+2
-10
lines changed

1 file changed

+2
-10
lines changed

Templating/TemplateNameParser.php

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,11 @@ public function parse($name)
5656
throw new \RuntimeException(sprintf('Template name "%s" contains invalid characters.', $name));
5757
}
5858

59-
$parts = explode(':', $name);
60-
if (3 !== count($parts)) {
59+
if (!preg_match('/^([^:]*):([^:]*):(.+)\.([^\.]+)\.([^\.]+)$/', $name, $matches)) {
6160
throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid (format is "bundle:section:template.format.engine").', $name));
6261
}
6362

64-
$elements = explode('.', $parts[2]);
65-
if (3 > count($elements)) {
66-
throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid (format is "bundle:section:template.format.engine").', $name));
67-
}
68-
$engine = array_pop($elements);
69-
$format = array_pop($elements);
70-
71-
$template = new TemplateReference($parts[0], $parts[1], implode('.', $elements), $format, $engine);
63+
$template = new TemplateReference($matches[1], $matches[2], $matches[3], $matches[4], $matches[5]);
7264

7365
if ($template->get('bundle')) {
7466
try {

0 commit comments

Comments
 (0)