p006/api/soft/smarty/4.2.1/sysplugins/smarty_internal_method_regi...

85 lines
4.0 KiB
PHP
Raw Normal View History

2022-11-29 22:06:03 +05:00
<?php
/**
* Smarty Method RegisterObject
*
* Smarty::registerObject() method
*
* @package Smarty
* @subpackage PluginsInternal
* @author Uwe Tews
*/
class Smarty_Internal_Method_RegisterObject
{
/**
* Valid for Smarty and template object
*
* @var int
*/
public $objMap = 3;
/**
* Registers object to be used in templates
*
* @api Smarty::registerObject()
* @link https://www.smarty.net/docs/en/api.register.object.tpl
*
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
* @param string $object_name
* @param object $object the
* referenced
* PHP
* object
* to
* register
*
* @param array $allowed_methods_properties list of
* allowed
* methods
* (empty
* = all)
*
* @param bool $format smarty
* argument
* format,
* else
* traditional
*
* @param array $block_methods list of
* block-methods
*
* @return \Smarty|\Smarty_Internal_Template
* @throws \SmartyException
*/
public function registerObject(
Smarty_Internal_TemplateBase $obj,
$object_name,
$object,
$allowed_methods_properties = array(),
$format = true,
$block_methods = array()
) {
$smarty = $obj->_getSmartyObj();
// test if allowed methods callable
if (!empty($allowed_methods_properties)) {
foreach ((array)$allowed_methods_properties as $method) {
if (!is_callable(array($object, $method)) && !property_exists($object, $method)) {
throw new SmartyException("Undefined method or property '$method' in registered object");
}
}
}
// test if block methods callable
if (!empty($block_methods)) {
foreach ((array)$block_methods as $method) {
if (!is_callable(array($object, $method))) {
throw new SmartyException("Undefined method '$method' in registered object");
}
}
}
// register the object
$smarty->registered_objects[ $object_name ] =
array($object, (array)$allowed_methods_properties, (boolean)$format, (array)$block_methods);
return $obj;
}
}