有没有办法调出像 'rails console' 这样的 Yii 控制台?

Is there a way to bring up a Yii console like 'rails console'?

有没有办法在命令行上使用像 rails console 这样的控制台与 Yii 交互?我想测试数据库和 ActiveRecord 调用。

您可以安装 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 的包装器为应用程序提供服务。

在 Yii 基本应用程序模板中...

cd /path/to/application
./yii serve localhost:12345

在任何控制器中,...说 controllers/SiteController.php

public function actionIndex()
{
    eval(\Psy\sh()); // <-- debugger point
    return $this->render('index');
}

当您通过 URL 访问此操作时,它会挂在您的浏览器上。如果您在控制台中返回查看,您会看到一个交互式 shell,它应该像 rails c 一样工作。查看 Psysh Documentation 了解更多详情。要退出此交互式控制台,请键入 exit;这应该 return 控制回 PHP 的内置服务器。 不要使用 Ctrl-C 退出交互式控制台,因为这也会关闭 PHP 的内置服务器。

在 Yii 高级应用程序模板中...

目前无法为应用程序提供服务,因为它默认为不存在的 console/web 提供内容。我已经用 Yii 提出了 issue;感兴趣的可以关注

但是,如果您有控制台控制器,则可以执行我们为基本应用所做的相同操作。当您 运行 控制台命令时,您应该会看到相同的交互式调试控制台。

1) 安装https://github.com/yiisoft/yii2-shell

composer require yiisoft/yii2-shell

2) ./yii shell