Command line Lili:如何通过命令行访问操作?

Command line Lili:如何通过命令行访问操作?,command-line,lithium,Command Line,Lithium,我正在尝试通过CLI运行操作。操作是UsersController::test() 所以,我运行这个: php库/limition/console/limition.php\\app\\controllers\\users控制器测试 但我一直遇到这样的错误: PHP致命错误:在第154行的/var/www/example.com/libraries/limition/action/Controller.PHP中调用未定义的方法limition\console\Request::get() 我做错

我正在尝试通过CLI运行操作。操作是
UsersController::test()

所以,我运行这个:
php库/limition/console/limition.php\\app\\controllers\\users控制器测试

但我一直遇到这样的错误:
PHP致命错误:在第154行的/var/www/example.com/libraries/limition/action/Controller.PHP中调用未定义的方法limition\console\Request::get()

我做错了什么?

请参阅以获取参考

据我所知,不可能直接从命令行调用控制器。虽然从你的错误来看,它似乎在试图做些什么

相反,创建一个从
\li\console\Command
扩展的类,并将其放置在
名称空间app\extensions\Command
中。例如,将该类命名为
Users
。在该类中,创建一个名为
test()
的方法,该方法将在通过cli调用命令时运行

现在,当您运行li3(或limition.php)时,它应该打印所有可用的命令,您应该可以在列表中看到您的命令。您可以调用
li3 users test
,如果您已将
limition/console/li3
添加到bin路径,则应该运行该测试。或者您可以调用
php-f path/to/lithium.php--users test
,这应该做同样的事情。如果您遗漏了
test
,它将在
app\extensions\console\Users
类中查找名为run()的方法并调用该方法


您可能会创建控制器的实例并调用test()方法,但正如您所看到的,从web浏览器运行时可用的请求类与从命令行运行时的请求类不同。最好在控制器方法中采用业务逻辑并将其移动到另一个类,然后将请求参数从控制器传递到该方法。然后从console命令类中,类似地调用相同的集中式方法。

这是正确的。web和CLI系统是分开的,有两个不同的
Request
类。这里的解决方案也是正确的。太棒了,谢谢!这是一个比我想象的好得多的解决方案。