giunashvili / spear
使用 Spear 运行任何语言!
v1.0.3
2022-01-21 18:39 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-22 01:03:25 UTC
README
Spear
简介
Spear 是一个方便的 PHP 包,允许你在许多不同的语言中执行代码。它使用简单,安装容易。
入门
要开始使用 Spear
,您需要使用 composer 将其作为依赖项安装到您的 PHP 项目中
composer require giunashvili/spear
然后您就可以开始了 🙏
如何使用
使用 Spear
非常简单。您只需要实例化 Spear
类并执行您想要使用的任何可用语言代码。Spear 的关键概念包括
Spear
类,它负责协调不同语言处理程序并返回实际输出。- 处理程序 - 在
Spear
类中,您可以选择所需的处理程序。选择处理程序相当于选择用哪种语言执行代码 - 每个处理程序都返回包含三种类型信息的输出:成功输出、错误输出、退出代码
让我们看看如何实现无输入的 Node 代码处理
<?php use Giunashvili\Spear\Spear; $nodeCode = "console.log('hello Spear!')"; $spear = new Spear; $spear->handler(Spear::NODE_14); $data = $spear->execute($nodeCode); dump($data->toArray()); /** * [ * 'result_code' => 0, * 'error_message' => null, * 'output' => 'hello Spear!', * ] */
现在,让我们看看如何处理输入
<?php use Giunashvili\Spear\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; $spear = new Spear; $spear->handler(Spear::NODE_14); $data = $spear->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
Spear 是如何工作的?
在底层,Spear 使用 Docker 根据处理程序和我们想要使用的语言创建容器。Spear 为每次执行创建一个新的容器,让代码在容器中执行,获取输出,然后销毁容器。这是安全的、灵活的,而且非常神奇 😊