Something that is being added in PHP 5.3.0 but is sorely missed in current versions is the ability to call a static class method from variables, for example:
$class = 'classname';
$method = 'methodname';
$vars = 'whatever';
// Only possible in PHP 5.3.0 and above
$output = $class::$method($vars);
It is something that is occasionally very useful (e.g. you have a validation class triggering other regional classes) and is already possible with standard class calls. Thankfully it’s very easy to simulate with eval:
function static_call($class, $method, $arguments = '')
{
if(is_array($arguments))
{
$arg_string = '';
$count = 0;
foreach($arguments as $key => $value)
{
if($count > 0)
{
$arg_string .= ', ';
}
$arg_string .= '$arguments['.$key.']';
$count++;
}
}
else
{
$arg_string = '$arguments';
}
eval('$return = '.$class.'::'.$method.'('.$arg_string.');');
return $return;
}
Using it is very simple:
$class = 'classname';
$method = 'methodname';
$vars = 'whatever';
$output = static_call($class, $method, $vars);
And will handle a single variable or an array of the required variables in order. There’s not much else to say apart from use it wisely!