2015-08-17 17:00:26 -07:00
< ? php
/*
* This file is part of Twig .
*
2017-04-13 15:53:35 +01:00
* ( c ) Fabien Potencier
2015-08-17 17:00:26 -07:00
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
/**
* Loads a template from an array .
*
* When using this loader with a cache mechanism , you should know that a new cache
* key is generated each time a template content " changes " ( the cache key being the
* source code of the template ) . If you don ' t want to see your cache grows out of
* control , you need to take care of clearing the old cache file by yourself .
*
* This loader should only be used for unit testing .
*
2017-04-13 15:53:35 +01:00
* @ final
*
2015-08-17 17:00:26 -07:00
* @ author Fabien Potencier < fabien @ symfony . com >
*/
2017-04-13 15:53:35 +01:00
class Twig_Loader_Array implements Twig_LoaderInterface , Twig_ExistsLoaderInterface , Twig_SourceContextLoaderInterface
2015-08-17 17:00:26 -07:00
{
2019-01-24 08:00:03 +00:00
protected $templates = [];
2015-08-17 17:00:26 -07:00
/**
* @ param array $templates An array of templates ( keys are the names , and values are the source code )
*/
2019-01-24 08:00:03 +00:00
public function __construct ( array $templates = [])
2015-08-17 17:00:26 -07:00
{
$this -> templates = $templates ;
}
/**
* Adds or overrides a template .
*
* @ param string $name The template name
* @ param string $template The template source
*/
public function setTemplate ( $name , $template )
{
$this -> templates [( string ) $name ] = $template ;
}
public function getSource ( $name )
{
2017-04-13 15:53:35 +01:00
@ trigger_error ( sprintf ( 'Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.' , get_class ( $this )), E_USER_DEPRECATED );
2015-08-17 17:00:26 -07:00
$name = ( string ) $name ;
if ( ! isset ( $this -> templates [ $name ])) {
throw new Twig_Error_Loader ( sprintf ( 'Template "%s" is not defined.' , $name ));
}
return $this -> templates [ $name ];
}
2017-04-13 15:53:35 +01:00
public function getSourceContext ( $name )
{
$name = ( string ) $name ;
if ( ! isset ( $this -> templates [ $name ])) {
throw new Twig_Error_Loader ( sprintf ( 'Template "%s" is not defined.' , $name ));
}
return new Twig_Source ( $this -> templates [ $name ], $name );
}
2015-08-17 17:00:26 -07:00
public function exists ( $name )
{
return isset ( $this -> templates [( string ) $name ]);
}
public function getCacheKey ( $name )
{
$name = ( string ) $name ;
if ( ! isset ( $this -> templates [ $name ])) {
throw new Twig_Error_Loader ( sprintf ( 'Template "%s" is not defined.' , $name ));
}
2017-07-03 16:47:07 +01:00
return $name . ':' . $this -> templates [ $name ];
2015-08-17 17:00:26 -07:00
}
public function isFresh ( $name , $time )
{
$name = ( string ) $name ;
if ( ! isset ( $this -> templates [ $name ])) {
throw new Twig_Error_Loader ( sprintf ( 'Template "%s" is not defined.' , $name ));
}
return true ;
}
}
2017-07-03 16:47:07 +01:00
class_alias ( 'Twig_Loader_Array' , 'Twig\Loader\ArrayLoader' , false );