Просмотр файла engine/classes/lib/Twig/Loader/Array.php

Размер файла: 2.31Kb
  1. <?php
  2.  
  3. /*
  4. * This file is part of Twig.
  5. *
  6. * (c) 2009 Fabien Potencier
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11.  
  12. /**
  13. * Loads a template from an array.
  14. *
  15. * When using this loader with a cache mechanism, you should know that a new cache
  16. * key is generated each time a template content "changes" (the cache key being the
  17. * source code of the template). If you don't want to see your cache grows out of
  18. * control, you need to take care of clearing the old cache file by yourself.
  19. *
  20. * @author Fabien Potencier <fabien@symfony.com>
  21. */
  22. class Twig_Loader_Array implements Twig_LoaderInterface, Twig_ExistsLoaderInterface
  23. {
  24. protected $templates = array();
  25.  
  26. /**
  27. * Constructor.
  28. *
  29. * @param array $templates An array of templates (keys are the names, and values are the source code)
  30. *
  31. * @see Twig_Loader
  32. */
  33. public function __construct(array $templates)
  34. {
  35. $this->templates = $templates;
  36. }
  37.  
  38. /**
  39. * Adds or overrides a template.
  40. *
  41. * @param string $name The template name
  42. * @param string $template The template source
  43. */
  44. public function setTemplate($name, $template)
  45. {
  46. $this->templates[(string) $name] = $template;
  47. }
  48.  
  49. /**
  50. * {@inheritdoc}
  51. */
  52. public function getSource($name)
  53. {
  54. $name = (string) $name;
  55. if (!isset($this->templates[$name])) {
  56. throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name));
  57. }
  58.  
  59. return $this->templates[$name];
  60. }
  61.  
  62. /**
  63. * {@inheritdoc}
  64. */
  65. public function exists($name)
  66. {
  67. return isset($this->templates[(string) $name]);
  68. }
  69.  
  70. /**
  71. * {@inheritdoc}
  72. */
  73. public function getCacheKey($name)
  74. {
  75. $name = (string) $name;
  76. if (!isset($this->templates[$name])) {
  77. throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name));
  78. }
  79.  
  80. return $this->templates[$name];
  81. }
  82.  
  83. /**
  84. * {@inheritdoc}
  85. */
  86. public function isFresh($name, $time)
  87. {
  88. $name = (string) $name;
  89. if (!isset($this->templates[$name])) {
  90. throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name));
  91. }
  92.  
  93. return true;
  94. }
  95. }