Project

General

Profile

1 1686 darkviper
<?php
2
3
/*
4
 * This file is part of Twig.
5
 *
6
 * (c) 2010 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
 * Represents a template function.
14
 *
15
 * @package    twig
16
 * @author     Fabien Potencier <fabien@symfony.com>
17
 */
18
abstract class Twig_Function implements Twig_FunctionInterface
19
{
20
    protected $options;
21
    protected $arguments = array();
22
23
    public function __construct(array $options = array())
24
    {
25
        $this->options = array_merge(array(
26
            'needs_environment' => false,
27
            'needs_context'     => false,
28
        ), $options);
29
    }
30
31
    public function setArguments($arguments)
32
    {
33
        $this->arguments = $arguments;
34
    }
35
36
    public function getArguments()
37
    {
38
        return $this->arguments;
39
    }
40
41
    public function needsEnvironment()
42
    {
43
        return $this->options['needs_environment'];
44
    }
45
46
    public function needsContext()
47
    {
48
        return $this->options['needs_context'];
49
    }
50
51
    public function getSafe(Twig_Node $functionArgs)
52
    {
53
        if (isset($this->options['is_safe'])) {
54
            return $this->options['is_safe'];
55
        }
56
57
        if (isset($this->options['is_safe_callback'])) {
58
            return call_user_func($this->options['is_safe_callback'], $functionArgs);
59
        }
60
61
        return array();
62
    }
63
}