Example #1
0
 /**
  * Invokes a task handler method using the request arguments.
  * 
  * @param \WordPress\Cli\TaskHandlerInterface $handler
  * @param string $method
  * 
  * @throws \WordPress\Cli\Exception if method cannot be called
  * 
  * @return mixed
  */
 protected function invokeHandler(TaskHandlerInterface $handler, $method)
 {
     $params = array();
     $reflection = new ReflectionMethod($handler, $method);
     foreach ($reflection->getParameters() as $i => $param) {
         $name = $param->getName();
         if ($this->request->hasArg($name)) {
             $params[$name] = $this->request->getArg($name);
         } else {
             if ($this->request->hasArg($i)) {
                 $params[$name] = $this->request->getArg($i);
             } else {
                 if ($param->isDefaultValueAvailable()) {
                     $params[$name] = $param->getDefaultValue();
                 } else {
                     throw new Exception("Missing parameter '{$name}'.");
                 }
             }
         }
     }
     return $reflection->invokeArgs($handler, $params);
 }