ChainLoader example

$projectDir = \dirname(__DIR__).\DIRECTORY_SEPARATOR.'Fixtures';
        $loader = new FilesystemLoader([]$projectDir);
        foreach ($paths as $path => $namespace) {
            if (null === $namespace) {
                $loader->addPath($path);
            } else {
                $loader->addPath($path$namespace);
            }
        }

        if ($useChainLoader) {
            $loader = new ChainLoader([$loader]);
        }

        $environment = new Environment($loader);
        foreach ($globals as $name => $value) {
            $environment->addGlobal($name$value);
        }

        $application = new Application();
        $application->add(new DebugCommand($environment$projectDir$bundleMetadata$defaultPath, null));
        $command = $application->find('debug:twig');

        

    public function createTemplate(string $template, string $name = null): TemplateWrapper
    {
        $hash = hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $template, false);
        if (null !== $name) {
            $name = sprintf('%s (string template %s)', $name$hash);
        } else {
            $name = sprintf('__string_template__%s', $hash);
        }

        $loader = new ChainLoader([
            new ArrayLoader([$name => $template]),
            $current = $this->getLoader(),
        ]);

        $this->setLoader($loader);
        try {
            return new TemplateWrapper($this$this->loadTemplate($this->getTemplateClass($name)$name));
        } finally {
            $this->setLoader($current);
        }
    }

    
Home | Imprint | This part of the site doesn't use cookies.