【问题标题】:Laravel tinker modeLaravel 修补模式
【发布时间】:2017-11-30 19:41:16
【问题描述】:

如果我运行php artisan tinker,CLI 将打开

Psy Shell v0.8.6 (PHP 7.0.8 — cli) by Justin Hileman
>>>

现在我输入一个像“test”这样的词,然后按回车键。

  • 我进入了什么模式?
  • 如何退出此模式? (ctrl+c 退出 tinker,但实际上我只想能够像往常一样再次执行命令,这意味着我输入一个命令,当我按下回车键时它将被执行)
  • 如何在这种模式下执行命令。如果我在这种模式下按回车,我将移动到下一行,但命令不会执行。

【问题讨论】:

  • 显示您进入您正在谈论的模式所采取的确切步骤。默认情况下,Psy Shell 应在输入时执行。

标签: laravel tinker


【解决方案1】:

当我键入 run PsySH 然后键入 test 时,我没有进入其他模式。我实际上得到一个错误,内容如下:

PHP 警告:在第 1 行的 Psy Shell 代码中使用未定义的常量测试 - 假定为“测试”(这将在 PHP 的未来版本中引发错误)

这可能是版本问题。

但是……

我想我知道你所说的模式。您可以通过键入一个单引号 ' 并按 Enter 进入该模式。

PsySH 所做的是让您跨多行提供输入。如果在下一行输入 ';,您应该会看到 "\n",因为它捕获了您按下的 Enter。

如果您想退出此模式,您可以:

  • 关闭您所做的任何开场白。您可以通过键入“function { + Enter”、“for(;;) { + Enter”、单引号和许多其他内容进入此模式。您需要为您开始的语句键入适当的结束语。对于函数,}。对于字符串,'" 等。
  • 按 ^D(Control+D)。这将使您回到 PsySH 提示符。这也适用于许多常规系统 shell,因为 ^D 发送 End-Of-File 字符。

【讨论】:

    【解决方案2】:
    • Tinker 是一个命令行工具,可让您从命令行与 Laravel 进行交互。
    • 您可以使用 ctrl+c(如您所述)或输入 exit; 并按回车键退出修补模式。
    • Tinker 基于PsySH,您可以将此模式视为逐行交互式PHP 解析器。

    因此,例如,您可以执行以下操作:

    $ php artisan tinker
    Psy Shell v0.7.2 (PHP 5.6.30-7+deb.sury.org~trusty+1 — cli) by Justin Hileman
    >>> $testString = "test";
    => "test"
    >>> echo $testString;
    test⏎
    => null
    >>> exit;
    Exit:  Goodbye.
    

    【讨论】:

    • 感谢您的快速回复。唯一对我不起作用的是,如果我写退出;然后按回车,下一条消息不会是退出:再见。相反,我将输入一个新行。
    • 可能是版本差异。我使用的是 PHP 5.6 和旧版本的 PsySH。我个人一般只使用 ctrl + c。
    • 当您在开始修补程序并按 Enter 后键入单词“test”作为第一个操作时会发生什么。接下来你输入 echo "hallo";然后按回车。这对你有用吗?在我身边回响“你好”;当我按下回车键时不执行。我希望得到 halo⏎ 回来,但是当我按下回车键时,我会转到下一行。
    • 在第一种情况下我得到一个错误,在第二种情况下我得到了预期的文本。你试过更新吗?您的版本可能无法正常工作。
    猜你喜欢
    • 1970-01-01
    • 2020-03-11
    • 2013-03-06
    • 2015-12-24
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多