ramsey/composer-repl-lib

ramsey/composer-repl 库背后的库,允许扩展 ramsey/composer-repl Composer 插件以及 repl 命令的非插件使用。

1.3.0 2024-04-17 03:23 UTC

This package is auto-updated.

Last update: 2024-09-19 02:26:30 UTC


README

ramsey/composer-repl Composer 插件背后的库。

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

关于

这是为 ramsey/composer-repl Composer 插件提供动力的库。由于不能扩展 Composer 插件,所以这个库存在是为了允许扩展。这个库还允许非插件使用 repl CLI 工具,即使您不想使用插件功能,也可以使用这个工具。

💡 如果您不需要为此插件需求扩展,并且想要使用插件提供的功能,请查看 ramsey/composer-repl

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

PsySH 是 ramsey/composer-repl 和 ramsey/composer-repl-lib 背后的 REPL。PsySH 是 PHP 的语言外壳。它与 Ruby 的 irb、Python 的 IPython 和 Java 的 JShell 类似。除了作为语言外壳外,PsySH 还可以作为交互式调试器和开发控制台使用。一些使用 PsySH 的项目包括 Laravel TinkerDrush(Drupal)、WP-CLI shell(WordPress)、CakePHP 控制台Yii shell

本项目遵守 行为准则。参与本项目及其社区,您应遵守此准则。

安装

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

composer require --dev ramsey/composer-repl-lib

用法

打开您的终端并输入 ./vendor/bin/repl

您将看到类似以下内容

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-lib 库版权所有 © Ben Ramsey,并许可在MIT许可(MIT)的条款下使用。更多信息请参阅LICENSE