假设您有这样的课程:
class MyClass:
def __init__(self, var1):
self.var = var1
....
此类在python中仅在分配值时起作用:
x = MyClass("Hi")
所以基本上,我的问题是我是否可以从php发送变量来执行python类,并返回其输出(它的字符串)并继续执行我的PHP代码?
有什么建议吗?
解
在php中:
$var = "something";
$result = exec("python fileName.py .$var")
在python中:
import sys
sys.argv[0] # this is the file name
sys.argv[1] # this is the variable passed from php
答案 0 :(得分:7)
首先,创建一个包含要执行的python脚本的文件,包括(或加载)类和x = MyClass("Hi")
现在,使用以下行来获得结果:
$result = exec('python yourscript.py');
答案 1 :(得分:0)
答案 2 :(得分:0)
我设法为PHP创建了简单的函数PY(),它允许您虚拟地将python代码包含到PHP脚本中。您可以将一些输入变量传递给python进程。你无法获得任何数据,但我相信这很容易修复:) 不适合在虚拟主机上使用(可能不安全,系统()调用),我为PHP-CLI创建它但仍然可以正常工作..
<?php
function PY()
{
$p=func_get_args();
$code=array_pop($p);
if (count($p) % 2==1) return false;
$precode='';
for ($i=0;$i<count($p);$i+=2) $precode.=$p[$i]." = json.loads('".json_encode($p[$i+1])."')\n";
$pyt=tempnam('/tmp','pyt');
file_put_contents($pyt,"import json\n".$precode.$code);
system("python {$pyt}");
unlink($pyt);
}
//begin
echo "This is PHP code\n";
$r=array('hovinko','ruka',6);
$s=6;
PY('r',$r,'s',$s,<<<ENDPYTHON
print('This is python 3.4 code. Looks like included in PHP :)');
s=s+42
print(r,' : ',s)
ENDPYTHON
);
echo "This is PHP code again\n";
?>
答案 3 :(得分:0)
你可以在python文件中打印你想要的细节/变量,这些文件将被缓冲到php文件中的$ result变量,并使用php文件中的echo $ result从python文件中打印出结果。 / p>
这是python修改过的代码:
#!/usr/bin/python
import sys
print sys.argv[1] + sys.argv[0] # this is the variable passed from php