mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-05 02:44:27 +02:00
- optimization of filter execution
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
21.06.2015
|
21.06.2015
|
||||||
- optimization of template/config file normalization
|
- optimization of template/config file normalization
|
||||||
- optimization of directory handling / build realpath
|
- optimization of directory handling / build realpath
|
||||||
|
- optimization of filter execution
|
||||||
|
|
||||||
19.06.2015
|
19.06.2015
|
||||||
- improvement allow closures as callback at $smarty->registerFilter() https://github.com/smarty-php/smarty/issues/59
|
- improvement allow closures as callback at $smarty->registerFilter() https://github.com/smarty-php/smarty/issues/59
|
||||||
|
@@ -111,7 +111,7 @@ class Smarty extends Smarty_Internal_TemplateBase
|
|||||||
/**
|
/**
|
||||||
* smarty version
|
* smarty version
|
||||||
*/
|
*/
|
||||||
const SMARTY_VERSION = '3.1.28-dev/3';
|
const SMARTY_VERSION = '3.1.28-dev/4';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* define variable scopes
|
* define variable scopes
|
||||||
|
@@ -32,35 +32,38 @@ class Smarty_Internal_Filter_Handler
|
|||||||
*/
|
*/
|
||||||
public static function runFilter($type, $content, Smarty_Internal_Template $template)
|
public static function runFilter($type, $content, Smarty_Internal_Template $template)
|
||||||
{
|
{
|
||||||
$output = $content;
|
|
||||||
// loop over autoload filters of specified type
|
// loop over autoload filters of specified type
|
||||||
if (!empty($template->smarty->autoload_filters[$type])) {
|
if (!empty($template->smarty->autoload_filters[$type])) {
|
||||||
foreach ((array) $template->smarty->autoload_filters[$type] as $name) {
|
foreach ((array) $template->smarty->autoload_filters[$type] as $name) {
|
||||||
$plugin_name = "Smarty_{$type}filter_{$name}";
|
$plugin_name = "Smarty_{$type}filter_{$name}";
|
||||||
if ($template->smarty->loadPlugin($plugin_name)) {
|
if (function_exists($plugin_name)) {
|
||||||
|
$callback = $plugin_name;
|
||||||
|
} elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
|
||||||
|
$callback = array($plugin_name, 'execute');
|
||||||
|
} elseif ($template->smarty->loadPlugin($plugin_name, false)) {
|
||||||
if (function_exists($plugin_name)) {
|
if (function_exists($plugin_name)) {
|
||||||
// use loaded Smarty2 style plugin
|
// use loaded Smarty2 style plugin
|
||||||
$output = $plugin_name($output, $template);
|
$callback = $plugin_name;
|
||||||
} elseif (class_exists($plugin_name, false)) {
|
} elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
|
||||||
// loaded class of filter plugin
|
// loaded class of filter plugin
|
||||||
if (!is_callable(array($plugin_name, 'execute'))) {
|
$callback = array($plugin_name, 'execute');
|
||||||
|
} else {
|
||||||
throw new SmartyException("Auto load {$type}-filter plugin method \"{$plugin_name}::execute\" not callable");
|
throw new SmartyException("Auto load {$type}-filter plugin method \"{$plugin_name}::execute\" not callable");
|
||||||
}
|
}
|
||||||
$output = call_user_func(array($plugin_name, 'execute'), $output, $template);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// nothing found, throw exception
|
// nothing found, throw exception
|
||||||
throw new SmartyException("Unable to auto load {$type}-filter plugin \"{$plugin_name}\"");
|
throw new SmartyException("Unable to auto load {$type}-filter plugin \"{$plugin_name}\"");
|
||||||
}
|
}
|
||||||
|
$content = call_user_func($callback, $content, $template);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// loop over registerd filters of specified type
|
// loop over registered filters of specified type
|
||||||
if (!empty($template->smarty->registered_filters[$type])) {
|
if (!empty($template->smarty->registered_filters[$type])) {
|
||||||
foreach ($template->smarty->registered_filters[$type] as $key => $name) {
|
foreach ($template->smarty->registered_filters[$type] as $key => $name) {
|
||||||
$output = call_user_func($template->smarty->registered_filters[$type][$key], $output, $template);
|
$content = call_user_func($template->smarty->registered_filters[$type][$key], $content, $template);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// return filtered output
|
// return filtered output
|
||||||
return $output;
|
return $content;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user