ramsey/composer-repl

Composer 内置的 REPL。

资助包维护!
ramsey

安装次数: 71,891

依赖者: 27

建议者: 0

安全: 0

星标: 101

关注者: 8

分支: 4

开放问题: 0

类型:composer-plugin

1.5.0 2023-03-18 21:31 UTC

This package is auto-updated.

Last update: 2024-09-19 04:29:44 UTC


README

Composer 内置的 REPL。

Source Code Download Package PHP Programming Language Read License Build Status Codecov Code Coverage Psalm Type Coverage

关于

Composer 插件提供了 composer repl 命令。

REPL 代表 读取-评估-打印循环。它是一个语言外壳,读取用户输入,使用编程语言(在本例中为 PHP)评估输入,并将输出打印到屏幕。然后,它返回到读取状态(这就是 循环 部分)。

PsySH 是提供 ramsey/composer-repl 后台的 REPL。PsySH 是一个 PHP 语言外壳。它类似于 Ruby 的 irb,Python 的 IPython,以及 Java 的 JShell。除了充当语言外壳外,PsySH 还可以充当交互式调试器和开发控制台。使用 PsySH 的项目包括 Laravel Tinker,Drupal 的 Drush,WordPress 的 WP-CLI shell,CakePHP 控制台,以及 Yii shell

💡 您可以不使用 Composer 插件功能,通过要求 ramsey/composer-repl-lib 来使用此 REPL。

此项目遵守 行为准则。通过参与此项目和其社区,您应遵守此准则。

安装

使用 Composer 将此包作为开发依赖项安装。

composer require --dev ramsey/composer-repl

用法

打开您的终端并输入 composer repl。如果您愿意,也可以输入 composer shell

您将看到类似以下内容

Psy Shell v0.11.1 (PHP 8.1.1 — cli) by Justin Hileman
------------------------------------------------------------------------
Welcome to the development console (REPL).
To learn more about what you can do in PsySH, type `help`.
------------------------------------------------------------------------
>>>

在开发控制台中,您可以做一些酷的事情,例如

>>> $hello = 'Hello, world'
=> "Hello, world"

>>> echo $hello
Hello, world

>>> foreach ([1, 2, 3] as $x) echo $x . "\n"
1
2
3

>>> $date = new DateTimeImmutable();
=> DateTimeImmutable @1598393282 {#6953
     date: 2020-08-25 22:08:02.643076 UTC (+00:00),
   }

>>> $getDate = fn (DateTimeInterface $dt): DateTimeInterface => $dt;
=> Closure(DateTimeInterface $dt): DateTimeInterface {#6964 …3}

>>> t assertInstanceOf(DateTimeInterface::class, $date);
Test passed!

>>> t assertSame($date, $getDate($date))
Test passed!

>>> phpunit

PHPUnit 9.5.11 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.1.1
Configuration: /path/to/ramsey/conventional-commits/phpunit.xml.dist

...............................................................  63 / 221 ( 28%)
............................................................... 126 / 221 ( 57%)
............................................................... 189 / 221 ( 85%)
................................                                221 / 221 (100%)

Time: 00:00.064, Memory: 12.00 MB

OK (221 tests, 484 assertions)

✨🐘 此 PsySH 实现具有超级 ElePHPant 能力。🐘✨

环境初始化

此 REPL 的强大之处在于其能够作为您本地开发环境中的工具。因此,您可能希望加载环境的一部分(即配置、对象等),以便您可以在 REPL 中访问这些内容。

您可以通过在 composer.json 中指定任意数量的 PHP 脚本来包含它来实现这一点,如下所示

{
    "extra": {
        "ramsey/composer-repl": {
            "includes": [
                "repl.php",
                "tests/bootstrap.php"
            ]
        }
    }
}

从这些脚本中设置的任何变量或加载的配置都可以在 REPL 中使用。

例如,如果 repl.php 包含

<?php
$foo = 'bar';

然后我们使用 composer.json 通过 REPL 加载它

{
    "extra": {
        "ramsey/composer-repl": {
            "includes": [ "repl.php" ]
        }
    }
}

然后,当我们处于 REPL 中时,我们将看到 $foo 已定义

>>> ls
Variables: $env, $foo, $phpunit

>>> $foo
=> "bar"

贡献

欢迎贡献!要贡献,请熟悉 CONTRIBUTING.md

协调披露

确保用户信息的安全是我们首要任务,我们欢迎外部安全研究员的贡献。如果您认为您在此存储库维护的软件中发现了安全问题,请阅读SECURITY.md以获取提交漏洞报告的说明。

版权和许可

ramsey/composer-repl 插件版权 © Ben Ramsey,并按照 MIT 许可协议(MIT)许可使用。有关更多信息,请参阅LICENSE