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程序员面试题 你必须提前准备!
Jan 16 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
Tensorflow的梯度异步更新示例
Jan 23 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 26 Python
Python利用capstone实现反汇编
Apr 06 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
PHP daddslashes 使用方法介绍
2012/10/26 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
javascript中返回顶部按钮的实现
2015/05/05 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
Vue中封装input组件的实例详解
2017/10/17 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
SVG实现时钟效果
2018/07/17 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
python操作oracle的完整教程分享
2018/01/30 Python
python 自动去除空行的实例
2018/07/24 Python
python中自带的三个装饰器的实现
2019/11/08 Python
用python解压分析jar包实例
2020/01/16 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
python实现计算图形面积
2021/02/22 Python
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
毕业生文员求职信
2013/11/03 职场文书
对标管理实施方案
2014/03/12 职场文书
教师党员一句话承诺
2014/03/28 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
英语教师求职信
2014/06/16 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
获奖感言范文
2015/07/31 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript
如何用Navicat操作MySQL
2021/05/12 MySQL
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers