raeen/phpy

在PHP中使用Python非常简单

5.0.0 2021-01-26 16:21 UTC

This package is auto-updated.

Last update: 2024-09-29 05:56:16 UTC


README

icon

phpy 是一个PHP库

您可以使用它将Python集成到PHP中

Latest Stable Version Total Downloads Latest Unstable Version LicenseMonthly Downloads Daily Downloads

特性

  • 显示Python文件的全部输出
  • 显示Python文件的最后一行输出
  • 向Python文件发送数据
  • 从Python文件获取数据
  • 在PHP中显示Python生成的图像
  • 路径生成
  • 编写Python行代码
  • 管理Python行代码
  • 编写Python部分
  • 需要Python部分

安装

git clone https://github.com/Raeen123/phpy
composer require raeen/phpy

先决条件

这是我的配置

php = 8.0.1 (Your php version must be at least 7.4 )
python = 3.9.1
numpy = 1.19.3
python-opencv =  4.4.0.46

Python

如果您没有在路径环境中添加Python,您需要在 core/Python.php 中的 const python_path 中添加您的Python路径

我们使用这些库创建 phpy.py

import sys
import json
import base64
import numpy as np
import cv2

在Python/include/library/php.py中导入 phpy.py 文件

从PHP获取数据

将数据发送到Python文件以获取数据,您必须

phpy.get_data( Number Of Send data )

为了返回数据,您必须使用print函数

从Python推送数据

phpy.push_data(data)

这只是

json.dumps(data)

从Python推送图像

这是用于从Python向PHP推送数据的函数

读取图像的示例

cv2.imread()
videoCaptureObject = cv2.VideoCapture(0)
ret, frame = videoCaptureObject.read()

推送图像

phpy.push_image(img,type)

从PHP发送数据

从PHP创建并发送数据到Python

您可以发送无限量的数据

require_once "../vendor/autoload.php";

use app\core\App;

$app = new App();
$python = $app->python;

$data1 = [
    'name' => 'raeen',
    'library' => 'phpy'
];
$data2 = "test";
$output = $python->set("../Python/test2.py")->send($data1, $data2)->gen();

实时输出示例

$site = "google.com";
$python->set('../Python/test6.py')->send($data)->live()->gen();

显示结果

$output = $python->set(path)->send(datas..)->gen()

显示图像

您可以使用此函数生成 phpy.push_img() 返回的内容

$app->img($output,$type,$show,$style)

$type 在 php.push_img() 中必须具有相同的类型

如果 $show 为 true,则在 img 标签中显示图像

您还可以为此设置样式

示例

$app->img($output,$type,true,
[
    'border' => '1px solid red'
])

路径

例如,我有一个图像文件在这个目录中,但Python文件在Python/**.py中,我想发送路径给它。为此,必须发送此路径 ../my-img 或使用此函数发送文件或目录的路径

$app->path(__Dir__,path)

初始化

如果您在PHP文件中有循环,最好在文件顶部添加此函数

$app->ini()

代码片段

一行

如果您想运行一个Python行,您应该使用此函数

$Snippet->set($code,function(){ 
    // controller 
})->gen();

对于控制变量,您应该在 |&name| 中使用它的名称

对于填充变量,您应该 return array ,它必须按顺序排列

在Python代码中必须使用 ",并在每行的末尾使用 ;

$Snippet = $app->snippet;
$Snippet->set("print(f'hello world {|&data|*7*|&test|}'); print('--Hello')",
function ($data,$test) {
    $data = 2;
    $test = 9;
    $data2 = $data*5;
    return [$data2 , $test];
})->gen();

开始 在开始编写代码之前,您应该使用此功能

$Snippet->start(name);

对于编写您的代码,您应该使用此功能

$Snippet->line(code)
.
.
.

对于行尾

$Snippet->end(name,save_last)

开始函数中的名称必须与此名称相同

为了在任意位置获取输出,您应该使用此功能

$Snippet->select(name)->gen()

示例,index.php

$Snippet->start("test");
$Snippet->line("a = 'Hello world'");
$Snippet->line("print(a)");
$Snippet->end("test");
$Snippet->select("test")->gen();
Output : Hello world 

您可以在其他文件中使用此代码

$Snippet->select("test")->gen();
Output : Hello world 

实时输出 任何地方(代码片段和Python类)您都可以轻松使用

gen() 之前使用 live(),然后使用 ```gen(/*您可以在其中写入函数以控制输出*/)

$python->set("../Python/test6.py")->send($site)->live()->gen(
    function ($res) {
        return "<pre>$res</pre>";
    }
);

您还可以设置时间而无需每次读取输出(默认为1)

$python->set("../Python/test6.py")->send($site)->live()->ini(3)->gen(
    function ($res) {
        return "<pre>$res</pre>";
    }
);
$Snippet->set(
    "import subprocess as sub; sub.call('ping |&site|') ",function($site){ $site = "google.com"; return [$site];}
)->live()->ini(3)->gen();
$Snippet->select('snippet-test8')->live()->gen(function($res){ return "<b><pre>$res</pre></b>";});

许可证

MIT许可证

版权所有 (c) 2021 Raeen Ahani Azari

特此授予任何获得此软件及其相关文档副本(“软件”)的人免费许可,可以不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许软件的提供方使用软件,受以下条件约束

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是包括但不限于适销性、适用于特定目的和非侵权性保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论是由合同行为、侵权行为或其他方式引起的,是否与软件或其使用或其他方式有关。

示例

有关示例,请参阅 phpy-examples

作者:RAEEN AHANI AZARI