ConsoleKit\Utils::computeFuncParams PHP Method

computeFuncParams() public static method

Creates an array of parameters according to the function definition
public static computeFuncParams ( ReflectionFunctionAbstract $reflection, array $args, array $options, boolean $needTagInDocComment = true ) : array
$reflection ReflectionFunctionAbstract
$args array
$options array
$needTagInDocComment boolean Whether the compute-params tag must be present in the doc comment
return array
    public static function computeFuncParams(ReflectionFunctionAbstract $reflection, array $args, array $options, $needTagInDocComment = true)
    {
        if ($needTagInDocComment && !preg_match('/@compute-params/', $reflection->getDocComment())) {
            return array($args, $options);
        }
        $nbRequiredParams = $reflection->getNumberOfRequiredParameters();
        if (count($args) < $nbRequiredParams) {
            throw new ConsoleException("Not enough parameters in '" . $reflection->getName() . "'");
        }
        $params = $args;
        if (count($args) > $nbRequiredParams) {
            $params = array_slice($args, 0, $nbRequiredParams);
            $args = array_slice($args, $nbRequiredParams);
        }
        foreach ($reflection->getParameters() as $param) {
            if ($param->isOptional() && substr($param->getName(), 0, 1) !== '_') {
                if (array_key_exists($param->getName(), $options)) {
                    $params[] = $options[$param->getName()];
                    unset($options[$param->getName()]);
                } else {
                    $params[] = $param->getDefaultValue();
                }
            }
        }
        $params[] = $args;
        $params[] = $options;
        return $params;
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * If not overriden, will execute the command specified
  * as the first argument
  * 
  * Commands must be defined as methods named after the
  * command, prefixed with execute (eg. create -> executeCreate)
  * 
  * @param array $args
  * @param array $options
  */
 public function execute(array $args, array $options = array())
 {
     if (!count($args)) {
         throw new ConsoleException("Missing subcommand name");
     }
     $command = ucfirst(Utils::camelize(array_shift($args)));
     $methodName = "execute{$command}";
     if (!method_exists($this, $methodName)) {
         throw new ConsoleException("Command '{$command}' does not exist");
     }
     $method = new ReflectionMethod($this, $methodName);
     $params = Utils::computeFuncParams($method, $args, $options);
     return $method->invokeArgs($this, $params);
 }
All Usage Examples Of ConsoleKit\Utils::computeFuncParams