redberry/spear

使用Spear运行任何语言!

v0.0.1-beta 2022-05-19 09:26 UTC

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为每次执行创建一个新的容器,让代码在容器中执行,获取输出,然后销毁容器。这是安全的、灵活的,非常神奇 😊