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中的__new__()方法的使用
Apr 09 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
Python3 socket同步通信简单示例
Jun 07 Python
Python基于scapy实现修改IP发送请求的方法示例
Jul 08 Python
python如何压缩新文件到已有ZIP文件
Mar 14 Python
深入浅析Python传值与传址
Jul 10 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
python中turtle库的简单使用教程
Nov 11 Python
python 如何用terminal输入参数
May 25 Python
Python 一键获取电脑浏览器的账号密码
May 11 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
详解vuex状态管理模式
2018/11/01 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
基于anaconda下强大的conda命令介绍
2018/06/11 Python
Python docx库用法示例分析
2019/02/16 Python
python logging日志模块原理及操作解析
2019/10/12 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
python 实现两个线程交替执行
2020/05/02 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
澳大利亚相机之家:Camera House
2017/11/30 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
生产经理的自我评价分享
2013/11/07 职场文书
电信专业毕业生推荐信
2013/11/18 职场文书
业务副厂长岗位职责
2014/01/03 职场文书
对祖国的寄语大全
2014/04/11 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server