Commit 6e44b408 by thybag

Cache application.encoding within HTML class to avoid unnecessary calls to Config::get();

Calling the "Config::get('application.encoding')" is expensive and within a large form (using the form builder) having it requested multiple times can result in a significant performance drag.

Caching this value reduced calls to Config:get within our project from 1200+ to 125. All core tests appear to pass with this change in place.
parent 1f005bd7
......@@ -10,6 +10,13 @@ class HTML {
public static $macros = array();
/**
* Cache application encoding locally to save expensive calls to config::get().
*
* @var string
*/
public static $encoding = null;
/**
* Registers a custom macro.
*
* @param string $name
......@@ -31,7 +38,8 @@ class HTML {
*/
public static function entities($value)
{
return htmlentities($value, ENT_QUOTES, Config::get('application.encoding'), false);
if(static::$encoding===null) static::$encoding = Config::get('application.encoding');
return htmlentities($value, ENT_QUOTES, static::$encoding, false);
}
/**
......@@ -42,7 +50,8 @@ class HTML {
*/
public static function decode($value)
{
return html_entity_decode($value, ENT_QUOTES, Config::get('application.encoding'));
if(static::$encoding===null) static::$encoding = Config::get('application.encoding');
return html_entity_decode($value, ENT_QUOTES, static::$encoding);
}
/**
......@@ -55,7 +64,8 @@ class HTML {
*/
public static function specialchars($value)
{
return htmlspecialchars($value, ENT_QUOTES, Config::get('application.encoding'), false);
if(static::$encoding===null) static::$encoding = Config::get('application.encoding');
return htmlspecialchars($value, ENT_QUOTES, static::$encoding, false);
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment