如何访问 CakePHP Shell 参数?

How to access CakePHP Shell Arguments?

我正在制作蛋糕 shell 脚本。当我使用一些命名参数时,例如:

--username=world

如何获取 "username" 参数/值?

我的代码如下所示:

class InviteShell extends AppShell
{
//... here are my methods.

public function getOptionParser()
    {
        $parser = parent::getOptionParser();
        $parser->addArgument('username', array(
            'help' => 'Send E-Mail to which user?'
        ))->addOption('method', array(
            'short' => 'm',
            'help' => __('The specific method you want help on.')
        ))->description(__('Lookup doc block comments for classes in CakePHP'));
        return $parser;
    }

}

参数和选项有什么区别?还有我如何在我的代码中读取这些选项?

唯一可行的是我可以读取 $this->args 数组,但它没有命名。我所能做的就是通过索引获取 arg,例如:$this->args[0]

我正在使用 Cake 2.9

参数是位置值,选项是前缀值:

shell_method argument1 argument2 --optionA=value --optionB=value

所以在你的情况下 username 是一个位置参数,将在位置 0 处查找,而 method 是一个可以出现在任何地方的前缀选项。

shell_method userA --method=methodX
shell_method --method=methodX userA

在这两种情况下,userA 值将在 $this->args[0] 中可用,而 methodX 值将在 $this->params['method'] 中或通过 $this->param('method') 可用。

另见