1<?php
2/**
3 * Smarty Internal Plugin Compile Object Block Function
4 * Compiles code for registered objects as block function
5 *
6 * @package    Smarty
7 * @subpackage Compiler
8 * @author     Uwe Tews
9 */
10
11/**
12 * Smarty Internal Plugin Compile Object Block Function Class
13 *
14 * @package    Smarty
15 * @subpackage Compiler
16 */
17class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_Compile_Private_Block_Plugin
18{
19    /**
20     * Setup callback and parameter array
21     *
22     * @param \Smarty_Internal_TemplateCompilerBase $compiler
23     * @param array                                 $_attr attributes
24     * @param string                                $tag
25     * @param string                                $method
26     *
27     * @return array
28     */
29    public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $method)
30    {
31        $_paramsArray = array();
32        foreach ($_attr as $_key => $_value) {
33            if (is_int($_key)) {
34                $_paramsArray[] = "$_key=>$_value";
35            } else {
36                $_paramsArray[] = "'$_key'=>$_value";
37            }
38        }
39        $callback = array("\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]", "->{$method}");
40        return array($callback, $_paramsArray, "array(\$_block_plugin{$this->nesting}, '{$method}')");
41    }
42}
43