Скажем, у вас есть такой класс:
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
Прежде всего, создайте файл, содержащий скрипт python, который вы хотите выполнить, включая (или загрузку) класс и x = MyClass("Hi")
Теперь для получения результата воспользуйтесь следующей строкой:
$result = exec('python yourscript.py');
Попробуйте пакет Python PECL:
Это расширение позволяет встроить интерпретатор Python внутри PHP, позволяя создавать экземпляры и манипулировать объектами Python из PHP.
Мне удалось создать простую функцию PY () для PHP, которая позволяет практически вставлять код 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"; ?>
Вы можете просто распечатать детали / переменные, которые вы хотите в файле python, которые будут буферизованы в переменную $ result в файле php и использовать echo $ result в php-файле для печати результата из файла python.
Вот модифицированный код python:
#!/usr/bin/python import sys print sys.argv[1] + sys.argv[0] # this is the variable passed from php