Is there a way to interact with Yii on the command line with a console like None
? I'd like to test DB and ActiveRecord calls.
答案 0 :(得分:1)
您可以安装yii-shell。它是由Yii团队制作的。它的作用类似于rails console
对不起,我在yii-shell的文档中工作,这是在撰写本文时 - 但是是一个承诺。
这就是你如何在Yii 2中使用正确的REPL。
首先,我们需要获得Psysh。您可以全局安装它以进行播放,但我建议您将以下行添加到composer.json
require-dev: {
// ... some other packages ...
"psy/psysh": "0.7.2"
}
运行composer update
以安装此软件包。
现在我们需要将它添加到控制器中。从控制器调用断点的方法是eval(\Psy\sh());
。
请注意,这会调用控制台进行调试。因此,如果您的应用程序是使用Apache,Nginx或任何其他未绑定到交互式控制台的服务器,那么这是毫无意义的
为了实现这一点,我使用PHP的内置服务器和Yii的包装器为应用程序提供了服务。
cd /path/to/application
./yii serve localhost:12345
在任何控制器中,......说controllers/SiteController.php
public function actionIndex()
{
eval(\Psy\sh()); // <-- debugger point
return $this->render('index');
}
当您通过网址访问此操作时,它会挂起您的浏览器。如果您在控制台中查看,您会看到一个交互式shell,它应该像rails c
一样工作。查看Psysh Documentation了解更多详情。要退出此交互式控制台,请键入exit
;这应该将控制权返回给PHP的内置服务器。 不要使用 Ctrl-C
退出交互式控制台,因为这样会关闭PHP的内置服务器。
此应用程序的服务暂时不起作用,因为它默认提供不存在的console/web
内容。我和Yii一起提出issue;如果您感兴趣,可以跟随它。
但是,如果你有控制台控制器,你可以做我们为基本应用做的事情。运行console命令时,应该会显示相同的交互式调试控制台。
答案 1 :(得分:0)