redberry / spear
使用Spear运行任何语言!
v0.0.1-beta
2022-05-19 09:26 UTC
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- phpunit/phpunit: ^9.5
- symfony/var-dumper: ^6.0
This package is auto-updated.
Last update: 2024-09-21 14:30:48 UTC
README
Spear
简介
Spear是一个方便的PHP包,允许你在多种不同的语言中执行代码。它简单易用,易于安装。
入门指南
要开始使用Spear
,你需要使用composer在你的php项目中安装它作为依赖项
composer require redberry/spear
然后你就可以使用了 🙏
如何使用
使用Spear
非常简单,你只需要实例化Spear
类并执行你想要的任何语言的代码。Spear的关键概念包括
Spear
类负责协调不同语言处理程序并返回实际输出。- 处理程序 - 在
Spear
类中,你可以选择所需的处理程序。选择处理程序就像选择你想要用哪种语言执行代码一样 - 每个处理程序返回包含三种类型信息的输出:成功输出、错误输出、退出码
让我们看看如何在不输入的情况下实现处理Node代码
<?php use Redberry\Spear\Facades\Spear; $nodeCode = "console.log('hello Spear!')"; $data = Spear::node()->execute($nodeCode); dump($data->toArray()); /** * [ * 'result_code' => 0, * 'error_message' => null, * 'output' => 'hello Spear!', * ] */
现在,让我们看看如何处理输入
<?php use Redberry\Spear\Facades\Spear; $nodeCode = <<<END let data = ''; const solve = () => { data = data.trim(); console.log(`hello, ${data}`); } process.stdin.on('data', c => data += c); process.stdin.on('end', solve); END; $data = Spear::node()->execute($nodeCode, 'Speeeear'); dump($data->toArray()); /** * [ * 'result_code' => 0, * 'error_message' => null, * 'output' => 'hello, Speeeear', * ] */
支持的语言
Spear提供了多种语言支持。以下是一个列表
- PHP 8.1
- Node 14
- C++
- Python 3
- Ruby 3
- Rust
- Go
- Java
- Perl
Spear是如何工作的?
在内部,Spear使用Docker根据处理程序和我们要使用的语言创建容器。Spear为每次执行创建一个新的容器,让代码在容器中执行,获取输出,然后销毁容器。这是安全的、灵活的,非常神奇 😊