Sunday, August 3, 2008

Redeclare PHP function

Unfortunatly we cannot easy redeclare (override) functions in PHP. But sometimes we extreamly need this. For example we have our class to deal with gettext:

class Translate
{
public static function _($text)
{
// ... do some stuff
return $result;
}
}

And we dont want to use its huge call
Translate::_('message to translate');

We want to use shortcut like
_('message to translate');

But, ooops! PHP already has '_' function, and first our idea is "override it!". Sorry, there is no native tools to redeclare function. Some extensions save us: APD or runkit.
// use override_function
override_function('_', '$text', 'return Translate::_($text);');
// or runkit_function_redefine
runkit_function_redefine('_', '$text', 'return Translate::_($text);');


There are some alternatives: give another name to your function, for example ;-)
function t($text)
{
Translate::_($text);
}