ramsey / composer-repl
Composer 内置的 REPL。
Requires
- php: ^8.1
- composer-plugin-api: ^2.0
- ramsey/composer-repl-lib: ^1.2
Requires (Dev)
- captainhook/captainhook: ^5.15
- captainhook/plugin-composer: ^5.3
- ergebnis/composer-normalize: ^2.30
- ramsey/conventional-commits: ^1.5
- roave/security-advisories: dev-latest
README
Composer 内置的 REPL。
关于
此 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。