raeen / phpy
在PHP中使用Python非常简单
Requires
- php: >=7.4
README
phpy 是一个PHP库
您可以使用它将Python集成到PHP中
特性
- 显示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