aboutsummaryrefslogtreecommitdiffstats
path: root/include/smarty/libs/sysplugins/smarty_internal_runtime_var.php
blob: fe4f94d91b554fc3d4e67ad1223964eebc5b5410 (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
<?php

/**
 * Runtime Methods createLocalArrayVariable
 *
 * @package    Smarty
 * @subpackage PluginsInternal
 * @author     Uwe Tews
 *
 **/
class Smarty_Internal_Runtime_Var
{
    /**
     * Template code runtime function to create a local Smarty variable for array assignments
     *
     * @param \Smarty_Internal_Template $tpl     template object
     * @param string                    $varName template variable name
     * @param bool                      $nocache cache mode of variable
     */
    public function createLocalArrayVariable(\Smarty_Internal_Template $tpl, $varName, $nocache = false)
    {
        if (!isset($tpl->tpl_vars[$varName])) {
            $tpl->tpl_vars[$varName] = new Smarty_Variable(array(), $nocache);
        } else {
            $tpl->tpl_vars[$varName] = clone $tpl->tpl_vars[$varName];
            if (!(is_array($tpl->tpl_vars[$varName]->value) ||
                $tpl->tpl_vars[$varName]->value instanceof ArrayAccess)
            ) {
                settype($tpl->tpl_vars[$varName]->value, 'array');
            }
        }
    }
}