vendor/symfony/src/Symfony/Component/Templating/TemplateReference.php
changeset 0 7f95f8617b0b
equal deleted inserted replaced
-1:000000000000 0:7f95f8617b0b
       
     1 <?php
       
     2 
       
     3 /*
       
     4  * This file is part of the Symfony package.
       
     5  *
       
     6  * (c) Fabien Potencier <fabien@symfony.com>
       
     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 namespace Symfony\Component\Templating;
       
    13 
       
    14 /**
       
    15  * Internal representation of a template.
       
    16  *
       
    17  * @author Victor Berchet <victor@suumit.com>
       
    18  *
       
    19  * @api
       
    20  */
       
    21 class TemplateReference implements TemplateReferenceInterface
       
    22 {
       
    23     protected $parameters;
       
    24 
       
    25     public function __construct($name = null, $engine = null)
       
    26     {
       
    27         $this->parameters = array(
       
    28             'name'   => $name,
       
    29             'engine' => $engine,
       
    30         );
       
    31     }
       
    32 
       
    33     public function __toString()
       
    34     {
       
    35         return $this->getLogicalName();
       
    36     }
       
    37 
       
    38     /**
       
    39      * Sets a template parameter.
       
    40      *
       
    41      * @param string $name   The parameter name
       
    42      * @param string $value  The parameter value
       
    43      *
       
    44      * @return TemplateReferenceInterface The TemplateReferenceInterface instance
       
    45      *
       
    46      * @throws  \InvalidArgumentException if the parameter is not defined
       
    47      *
       
    48      * @api
       
    49      */
       
    50     public function set($name, $value)
       
    51     {
       
    52         if (array_key_exists($name, $this->parameters)) {
       
    53             $this->parameters[$name] = $value;
       
    54         } else {
       
    55             throw new \InvalidArgumentException(sprintf('The template does not support the "%s" parameter.', $name));
       
    56         }
       
    57 
       
    58         return $this;
       
    59     }
       
    60 
       
    61     /**
       
    62      * Gets a template parameter.
       
    63      *
       
    64      * @param string $name The parameter name
       
    65      *
       
    66      * @return string The parameter value
       
    67      *
       
    68      * @throws  \InvalidArgumentException if the parameter is not defined
       
    69      *
       
    70      * @api
       
    71      */
       
    72     public function get($name)
       
    73     {
       
    74         if (array_key_exists($name, $this->parameters)) {
       
    75             return $this->parameters[$name];
       
    76         }
       
    77 
       
    78         throw new \InvalidArgumentException(sprintf('The template does not support the "%s" parameter.', $name));
       
    79     }
       
    80 
       
    81     /**
       
    82      * Gets the template parameters.
       
    83      *
       
    84      * @return array An array of parameters
       
    85      *
       
    86      * @api
       
    87      */
       
    88     public function all()
       
    89     {
       
    90         return $this->parameters;
       
    91     }
       
    92 
       
    93     /**
       
    94      * Returns the path to the template.
       
    95      *
       
    96      * By default, it just returns the template name.
       
    97      *
       
    98      * @return string A path to the template or a resource
       
    99      *
       
   100      * @api
       
   101      */
       
   102     public function getPath()
       
   103     {
       
   104         return $this->parameters['name'];
       
   105     }
       
   106 
       
   107     /**
       
   108      * Returns the "logical" template name.
       
   109      *
       
   110      * The template name acts as a unique identifier for the template.
       
   111      *
       
   112      * @return string The template name
       
   113      *
       
   114      * @api
       
   115      */
       
   116     public function getLogicalName()
       
   117     {
       
   118         return $this->parameters['name'];
       
   119     }
       
   120 }