python如何调用php文件中的函数详解


Posted in Python onDecember 29, 2020

前言

python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码。函数所需的参数可通过命令行传递。

测试环境

1、操作系统:macos10.13.2

2、php版本:PHP 7.1.7(mac自带)

3、python版本:python3.6.0

4、python库:subprocess

调用php函数

php命令行调用php文件中的函数

php文件:test_hello.php

<?php


function hello_world($s1)
{
	$str1 = $s1;
	echo $str1;
	echo "\n";
}

function hello_world2($s1, $s2)
{
	$str1 = $s1;
	$str2 = $s2;
	echo $s1;
	echo "**********";
	echo $s2;
	echo "\n";
}

// 获取参数,索引为0为调用的文件路径,索引为1为调用的函数,索引为2为函数传入参数$s1,索引为3为函数参数$s2

var_dump($argv);
// exit;

// 调用函数
$func_name = $argv[1];


if ($func_name == "hello_world")
{
	// 参数1
	$param1 = $argv[2];
	hello_world($param1);
}
elseif ($func_name == "hello_world2")
{
	// 参数1
	$param1 = $argv[2];
	// 参数2
	$param2 = $argv[3];
 hello_world2($param1, $param2);
}
else
{
 echo "the function $func_name is not exist !";
}

?>

terminal执行php命令

# 字符串中包含空格、逗号、反斜杠,需要使用""来确定为1个参数
php -f test_hello.php hello_world "My name is John\\, age is 20."
php -f test_hello.php hello_world2 "My name is John\\, age is 20." "My hometown is BaoDing."
php -f test_hello.php hello_world3 "My name is John\\, age is 20."

执行结果

python如何调用php文件中的函数详解

python子进程执行php命令行

python文件:test.py,将test_hello.php与test.py放在同目录下运行

import subprocess


class Test(object):
 def run(self, cmd):
 proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) # 开启子进程
 res = proc.stdout.read()
 if res:
  res = res.decode()
 return res


cmd1 = 'php -f test_hello.php hello_world "My name is John\\, age is 20."'
cmd2 = 'php -f test_hello.php hello_world2 "My name is John\\, age is 20." "My hometown is BaoDing."'
cmd3 = 'php -f test_hello.php hello_world3 "My name is John\\, age is 20."'
obj = Test()
for i in [cmd1, cmd2, cmd3]:
 res = obj.run(cmd1)
 print(res)
 print("*" * 10)

python如何调用php文件中的函数详解

到此这篇关于python如何调用php文件中函数的文章就介绍到这了,更多相关python调用php函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中的格式化输出用法总结
Jul 28 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
Python Request类源码实现方法及原理解析
Aug 17 Python
Python实现自动整理文件的脚本
Dec 17 Python
想学画画?python满足你!
Dec 24 Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 Python
Python字符串的15个基本操作(小结)
Feb 03 Python
python opencv通过4坐标剪裁图片
Jun 05 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 #Python
pycharm如何设置官方中文(如何汉化)
Dec 29 #Python
详解Pycharm第三方库的安装及使用方法
Dec 29 #Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 #Python
Python 获取异常(Exception)信息的几种方法
Dec 29 #Python
python 将html转换为pdf的几种方法
Dec 29 #Python
python实现ping命令小程序
Dec 28 #Python
You might like
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
Django Admin 实现外键过滤的方法
2017/09/29 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
python安装scipy的方法步骤
2019/06/26 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
用Python进行websocket接口测试
2020/10/16 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
学校班班通实施方案
2014/06/11 职场文书
管理工程专业求职信
2014/08/10 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
雾霾停课通知
2015/04/24 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
改进工作作风心得体会
2016/01/23 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
Java实现二分搜索树的示例代码
2022/03/17 Java/Android
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL
Go语言怎么使用变长参数函数
2022/07/15 Golang