Cake\Console\Shell::parseDispatchArguments PHP Method

parseDispatchArguments() public method

Parses the arguments for the dispatchShell() method.
public parseDispatchArguments ( array $args ) : array
$args array Arguments fetch from the dispatchShell() method with func_get_args()
return array First value has to be an array of the command arguments. Second value has to be an array of extra parameter to pass on to the dispatcher
    public function parseDispatchArguments($args)
    {
        $extra = [];
        if (is_string($args[0]) && count($args) === 1) {
            $args = explode(' ', $args[0]);
            return [$args, $extra];
        }
        if (is_array($args[0]) && !empty($args[0]['command'])) {
            $command = $args[0]['command'];
            if (is_string($command)) {
                $command = explode(' ', $command);
            }
            if (!empty($args[0]['extra'])) {
                $extra = $args[0]['extra'];
            }
            return [$command, $extra];
        }
        return [$args, $extra];
    }

Usage Example

Beispiel #1
0
 /**
  * Test the dispatchShell() arguments parser
  *
  * @return void
  */
 public function testDispatchShellArgsParser()
 {
     $Shell = new Shell();
     $expected = [['schema', 'create', 'DbAcl'], []];
     // Shell::dispatchShell('schema create DbAcl');
     $result = $Shell->parseDispatchArguments(['schema create DbAcl']);
     $this->assertEquals($expected, $result);
     // Shell::dispatchShell('schema', 'create', 'DbAcl');
     $result = $Shell->parseDispatchArguments(['schema', 'create', 'DbAcl']);
     $this->assertEquals($expected, $result);
     // Shell::dispatchShell(['command' => 'schema create DbAcl']);
     $result = $Shell->parseDispatchArguments([['command' => 'schema create DbAcl']]);
     $this->assertEquals($expected, $result);
     // Shell::dispatchShell(['command' => ['schema', 'create', 'DbAcl']]);
     $result = $Shell->parseDispatchArguments([['command' => ['schema', 'create', 'DbAcl']]]);
     $this->assertEquals($expected, $result);
     $expected[1] = ['param' => 'value'];
     // Shell::dispatchShell(['command' => 'schema create DbAcl', 'extra' => ['param' => 'value']]);
     $result = $Shell->parseDispatchArguments([['command' => 'schema create DbAcl', 'extra' => ['param' => 'value']]]);
     $this->assertEquals($expected, $result);
     // Shell::dispatchShell(['command' => ['schema', 'create', 'DbAcl'], 'extra' => ['param' => 'value']]);
     $result = $Shell->parseDispatchArguments([['command' => ['schema', 'create', 'DbAcl'], 'extra' => ['param' => 'value']]]);
     $this->assertEquals($expected, $result);
 }