container = $container; $this->callableResolver = $callableResolver; } /** * Initialize and return the Twig component. * * @return \Slim\Views\Twig */ public function __invoke(): Twig { $twig = new Twig(new FilesystemLoader( $this->container->get('views_path') )); $twig->getEnvironment()->setCache( $this->container->get('view_cache') ); $twig->getEnvironment()->getExtension(CoreExtension::class)->setDateFormat( $this->container->get('date_format'), '%d days' ); $twig->getEnvironment()->getExtension(CoreExtension::class)->setTimezone( $this->container->get('timezone') ); foreach (self::VIEW_FUNCTIONS as $function) { $function = $this->callableResolver->resolve($function); $twig->getEnvironment()->addFunction( new TwigFunction($function->name(), $function) ); } return $twig; } }