使用 Spear 运行任何语言!

v1.0.3 2022-01-21 18:39 UTC

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