| <?php |
| |
| /* |
| * This file is part of Twig. |
| * |
| * (c) Fabien Potencier |
| * |
| * For the full copyright and license information, please view the LICENSE |
| * file that was distributed with this source code. |
| */ |
| |
| namespace Twig\RuntimeLoader; |
| |
| /** |
| * Lazy loads the runtime implementations for a Twig element. |
| * |
| * @author Robin Chalas <robin.chalas@gmail.com> |
| */ |
| class FactoryRuntimeLoader implements RuntimeLoaderInterface |
| { |
| private $map; |
| |
| /** |
| * @param array $map An array where keys are class names and values factory callables |
| */ |
| public function __construct(array $map = []) |
| { |
| $this->map = $map; |
| } |
| |
| public function load(string $class) |
| { |
| if (!isset($this->map[$class])) { |
| return null; |
| } |
| |
| $runtimeFactory = $this->map[$class]; |
| |
| return $runtimeFactory(); |
| } |
| } |