public function __call($cmd, $args)
{
$cb = null;
for ($i = sizeof($args) - 1; $i >= 0; --$i) {
$a = $args[$i];
if ((is_array($a) || is_object($a)) && is_callable($a)) {
$cb = CallbackWrapper::wrap($a);
$args = array_slice($args, 0, $i);
break;
} elseif ($a !== null) {
break;
}
}
$cmd = strtoupper($cmd);
$this->command($cmd, $args, $cb);
}