summaryrefslogtreecommitdiff
path: root/src/Variable.php
blob: 0e38d1257aeb0227e64bddce6b0aa31f385aaf7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php

namespace Smarty;

/**
 * class for the Smarty variable object
 * This class defines the Smarty variable object
 *


 */
#[\AllowDynamicProperties]
class Variable
{
    /**
     * template variable
     *
     * @var mixed
     */
    public $value = null;

	/**
	 * Other r/w properties for foreach, for, while, etc.
	 */
	public $step, $total, $first, $last, $key, $show, $iteration, $index = null;

	/**
	 * @param mixed|null $value
	 */
	public function setValue($value): void {
		$this->value = $value;
	}

    /**
     * if true any output of this variable will be not cached
     *
     * @var boolean
     */
    private $nocache = false;

	/**
	 * @param bool $nocache
	 */
	public function setNocache(bool $nocache): void {
		$this->nocache = $nocache;
	}

    /**
     * create Smarty variable object
     *
     * @param mixed   $value   the value to assign
     * @param boolean $nocache if true any output of this variable will be not cached
     */
    public function __construct($value = null, $nocache = false)
    {
        $this->value = $value;
        $this->nocache = $nocache;
    }

	public function getValue() {
		return $this->value;
	}

    /**
     * <<magic>> String conversion
     *
     * @return string
     */
    public function __toString()
    {
        return (string)$this->value;
    }

	/**
	 * Handles ++$a and --$a in templates.
	 *
	 * @param $operator '++' or '--', defaults to '++'
	 *
	 * @return int|mixed
	 * @throws Exception
	 */
	public function preIncDec($operator = '++') {
		if ($operator == '--') {
			return --$this->value;
		} elseif ($operator == '++') {
			return ++$this->value;
		} else {
			throw new Exception("Invalid incdec operator. Use '--' or '++'.");
		}
		return $this->value;
	}

	/**
	 * Handles $a++ and $a-- in templates.
	 *
	 * @param $operator '++' or '--', defaults to '++'
	 *
	 * @return int|mixed
	 * @throws Exception
	 */
	public function postIncDec($operator = '++') {
		if ($operator == '--') {
			return $this->value--;
		} elseif ($operator == '++') {
			return $this->value++;
		} else {
			throw new Exception("Invalid incdec operator. Use '--' or '++'.");
		}
	}

	/**
	 * @return bool
	 */
	public function isNocache(): bool {
		return $this->nocache;
	}

}