| 
<?phpnamespace eMacros\Runtime\Callback;
 
 use eMacros\Applicable;
 use eMacros\Scope;
 use eMacros\GenericList;
 
 class CallFunctionArray implements Applicable {
 public function apply(Scope $scope, GenericList $arguments) {
 if (count($arguments) == 0) {
 throw new \BadFunctionCallException("CallFunctionArray: No parameters found.");
 }
 
 $callback = $arguments[0]->evaluate($scope);
 
 //check for valid callback
 if (!is_callable($callback)) {
 throw new \InvalidArgumentException("CallFunctionArray: Argument is not a valid callback.");
 }
 
 if (count($arguments) > 1) {
 $args = $arguments[1]->evaluate($scope);
 
 if (!is_array($args)) {
 throw new \InvalidArgumentException(sprintf("CallFunctionArray: An array was expected as second argument but %s found instead.", gettype($args)));
 }
 
 return call_user_func_array($callback, $args);
 }
 
 return call_user_func_array($callback, array());
 }
 }
 ?>
 |