Subversion Repositories ALCASAR

Rev

Details | Last modification | View Log

Rev Author Line No. Line
2809 rexy 1
<?php
2
 
3
/**
4
 * Smarty Method RegisterObject
5
 *
6
 * Smarty::registerObject() method
7
 *
8
 * @package    Smarty
9
 * @subpackage PluginsInternal
10
 * @author     Uwe Tews
11
 */
12
class Smarty_Internal_Method_RegisterObject
13
{
14
    /**
15
     * Valid for Smarty and template object
16
     *
17
     * @var int
18
     */
19
    public $objMap = 3;
20
 
21
    /**
22
     * Registers object to be used in templates
23
     *
24
     * @api  Smarty::registerObject()
25
     * @link http://www.smarty.net/docs/en/api.register.object.tpl
26
     *
27
     * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
28
     * @param string                                                          $object_name
29
     * @param object                                                          $object                     the
30
     *                                                                                                    referenced
31
     *                                                                                                    PHP
32
     *                                                                                                    object
33
     *                                                                                                    to
34
     *                                                                                                    register
35
     *
36
     * @param array                                                           $allowed_methods_properties list of
37
     *                                                                                                    allowed
38
     *                                                                                                    methods
39
     *                                                                                                    (empty
40
     *                                                                                                    = all)
41
     *
42
     * @param bool                                                            $format                     smarty
43
     *                                                                                                    argument
44
     *                                                                                                    format,
45
     *                                                                                                    else
46
     *                                                                                                    traditional
47
     *
48
     * @param array                                                           $block_methods              list of
49
     *                                                                                                    block-methods
50
     *
51
     * @return \Smarty|\Smarty_Internal_Template
52
     * @throws \SmartyException
53
     */
54
    public function registerObject(
55
        Smarty_Internal_TemplateBase $obj,
56
        $object_name,
57
        $object,
58
        $allowed_methods_properties = array(),
59
        $format = true,
60
        $block_methods = array()
61
    ) {
62
        $smarty = $obj->_getSmartyObj();
63
        // test if allowed methods callable
64
        if (!empty($allowed_methods_properties)) {
65
            foreach ((array)$allowed_methods_properties as $method) {
66
                if (!is_callable(array($object, $method)) && !property_exists($object, $method)) {
67
                    throw new SmartyException("Undefined method or property '$method' in registered object");
68
                }
69
            }
70
        }
71
        // test if block methods callable
72
        if (!empty($block_methods)) {
73
            foreach ((array)$block_methods as $method) {
74
                if (!is_callable(array($object, $method))) {
75
                    throw new SmartyException("Undefined method '$method' in registered object");
76
                }
77
            }
78
        }
79
        // register the object
80
        $smarty->registered_objects[ $object_name ] =
81
            array($object, (array)$allowed_methods_properties, (boolean)$format, (array)$block_methods);
82
        return $obj;
83
    }
84
}