public function __construct(Environment $environment, ExpressionTokenizer $expressionTokenizer) { self::$expressionTokenizer = $expressionTokenizer; if (self::$environment === $environment) { return; } self::$environment = $environment; self::$fallbackTagName = $environment->getOption('fallback_tag'); self::$delimiters = $environment->getOption('delimiters'); self::$closingTags = []; $blockEndPrefix = $environment->getOption('block_end_prefix'); $blockTags = new \CallbackFilterIterator(new \ArrayIterator($environment->getTags()), function (Tag $tag) { return $tag->hasEndingTag(); }); foreach ($blockTags as $name => $tag) { self::$closingTags[$blockEndPrefix . $name] = 'end' . $name; } $this->createPatterns($blockEndPrefix); }