ramsey / composer-repl-lib
ramsey/composer-repl 库背后的库,允许扩展 ramsey/composer-repl Composer 插件以及 repl 命令的非插件使用。
Requires
- php: ^8.1
- composer/composer: ^2.2
- phpunit/phpunit: ^10.1 || ^11.0
- psy/psysh: ^0.11.12 || ^0.12.0
- symfony/console: ^6.0 || ^7.0
- symfony/finder: ^6.0 || ^7.0
- symfony/process: ^6.0 || ^7.0
Requires (Dev)
- captainhook/captainhook: ^5.15
- captainhook/plugin-composer: ^5.3
- composer/xdebug-handler: ^3.0
- ergebnis/composer-normalize: ^2.30
- hamcrest/hamcrest-php: ^2.0
- mockery/mockery: ^1.5
- php-parallel-lint/php-console-highlighter: ^1.0
- php-parallel-lint/php-parallel-lint: ^1.3.2
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^1.10
- phpstan/phpstan-mockery: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- ramsey/coding-standard: ^2.2
- ramsey/conventional-commits: ^1.5
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-19 02:26:30 UTC
README
ramsey/composer-repl Composer 插件背后的库。
关于
这是为 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 Tinker、Drush(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。