- 전체
- Python 일반
- Python 수학
- Python 그래픽
- Python 자료구조
- Python 인공지능
- Python 인터넷
- Python SAGE
- wxPython
- TkInter
- iPython
- wxPython
- pyQT
- Jython
- django
- flask
- blender python scripting
- python for minecraft
- Python 데이터 분석
- Python RPA
- cython
- PyCharm
- pySide
- kivy (python)
Python 인터넷 PiP - Python in PHP
2017.05.06 12:11
PiP - Python in PHP
Both Python and PHP are what has become known as interpretted scripting languages. Each has achieved substantial popularity due primarily to their ability to facilitate rapid prototyping. As both a Python and PHP enthusiast, I wanted to bring these two systems together to promote even greater and more interesting development opportunities.
To that end, I've written a Python extension for PHP. In short, this extensions allows the Python interpretter to be embedded inside of PHP (think of PHP as the parent language with Python as its child). This allows native Python objects to be instantiated and manipulated from within PHP. There is also initial support for accessing PHP functions and data from within the embedded Python environment.
What exists right now is primarily a "proof of concept" implementation. It will serve as a solid starting point development.
The Python extension is available from its PECL package page. The source code currently lives in the PECL CVS repository. Some packaged distributions are also available.
Slides from my presentations at the 2002 International PHP Conference are available. I discussed internals and applications.
Examples
Here's an example of what it can do at the moment:
1. Evaluating Python Code from PHP
<?php
$a = "test";
$b = true;
$c = 50;
$d = 60.4;
$code = <<<EOD
import php
a = php.var('a')
b = php.var('b')
c = php.var('c')
d = php.var('d')
print a, b, c, d
print a, d / c + b, a
EOD;
py_eval($code);
?>
Result
test 1 50 60.4 test 2.208 test
2. Python Object Instantiation
# module.py
class TestClass:
def __init__(self, foo):
self.foo = foo
def returnInt(self):
return 1113
def test(self, a, b = 'str'):
return "a = %d, b = %s" % (a, b)
def returnMe(self):
return self
def returnTuple(self):
return (1, "two", 3.0)
def returnList(self):
return [1, "two", 3.0]
def returnDict(self):
d = {}
d['one'] = 1
d['two'] = 2
d['three'] = 3
return d
def p(self, var):
print var
<?php
$p = new Python('module', 'TestClass', array(435));
print $p->returnInt() . "\n";
print $p->test(1, 'bar') . "\n";
print $p->foo . "\n";
$p->foo = 987;
print $p->foo . "\n";
# $copy points to the same object
$copy = $p->returnMe();
print $copy->foo . "\n";
$p->foo = 987;
print $copy->foo . "\n";
?>
Result
1113 a = 1, b = bar 435 987 987 987
3. Type Conversion
<?php
var_dump($p->returnTuple());
var_dump($p->returnList());
var_dump($p->returnDict());
$a = array('one' => 1, 2, 3);
$p->p($a);
class Test {
var $member = 'test';
}
$t = new Test();
$p->p($t);
?>
Result
array(3) {
[0]=>
int(1)
[1]=>
string(3) "two"
[2]=>
float(3)
}
array(3) {
[0]=>
int(1)
[1]=>
string(3) "two"
[2]=>
float(3)
}
array(3) {
["three"]=>
int(3)
["two"]=>
int(2)
["one"]=>
int(1)
}
{'1': 3, '0': 2, 'one': 1}
{'member': 'test'}
As you can see, these current examples are fairly crude. In time, I'll work up some more detailed examples, but hopefully the above illustrate the extensions current cabilities.
A great deal of inspiration (in the forms design and code) for my Python in PHP extension came from the existing Java PHP extension and the mod_python Apache module.
Distributions
The current code is still considered "alpha" quality. It may contain bugs and definitely lacks features. There are still a large number of performance issues that require consideration.
The distribution is packaged using the PEAR installation tool. Under supported platforms, the extension can be build using the following command:
Building with PEAR
$ pear build running: phpize PHP Api Version : 20020307 Zend Module Api No : 20020429 Zend Extension Api No : 20021010 Python installation directory? [autodetect] : building in /var/tmp/pear-build-jon/python-0.1 running: /home/jon/src/pear/PECL/python/configure --with-python running: make python.so copied to /home/jon/src/pear/PECL/python/python.so
A Microsoft Visual C++ 6.0 project file is also included to facilitate building under Windows.
Note that you'll need Python installed in order to build the extension. I'm currently building against Python 2.2.2. I've heard that ActivePython works, as well.
Also, a lot of the behavior (particularly with regard to type conversions) has not be finalized. The array to sequence conversion will definitely evolve, for instance.
Feel free to contact me with comments or suggestions (remember: the best suggestions come in diff -u format). I can't guarantee I'll have time to act on that immediately, but I will surely get to them soon.
- Python in PHP 0.6.0 - PEAR package (released November 5, 2002)
- Python in PHP 0.5 - Zip file (released July 7, 2002)
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 11 |
[PyQT5] PyQt5 Mainwindow에 Qt Designer를 사용한 graph Widget 추가
| 졸리운_곰 | 2024.06.06 | 476 |
| 10 |
[PyQT5] [Python with Pyqt5] Widget에다가 그래프 넣기 (Feat. Matplotlib)
| 졸리운_곰 | 2024.06.06 | 437 |
| 9 |
[PyQT5] 파이썬(Python)PyQt5 - QMessageBox 사용하기
| 졸리운_곰 | 2024.06.06 | 455 |
| 8 |
[PyQT5] UI Designer 에서 Tab Widget 생성 하기
| 졸리운_곰 | 2024.06.06 | 420 |
| 7 |
[PyQT5] UI Designer 에서 리사이즈 시 같이 확장하기
| 졸리운_곰 | 2024.06.06 | 537 |
| 6 |
[PyQT5] UI Designer 에서 Grid Layout 배치 해보기
| 졸리운_곰 | 2024.06.06 | 474 |
| 5 |
[pyQT] 「Python : PyQt5」 Qt Designer : .ui → .py 변환
| 졸리운_곰 | 2024.06.05 | 624 |
| 4 |
[pyQT] Dev/python/ [pyqt5] 프로그램창을 항상 가장 위에 있게 하면서 동시에 타이틀 바도 없게 하려면?
| 졸리운_곰 | 2024.06.01 | 542 |
| 3 |
[pyQT] QtDesigner에서 리소스 편집기 사용하기
| 졸리운_곰 | 2024.05.28 | 499 |
| 2 |
[pyQT] Qt Resource 파일 (.qrc) 적용방법
| 졸리운_곰 | 2024.05.28 | 421 |
| 1 | [pyQT] from PyQt5.QtChart import QLineSeries, QChart, QValueAxis, QDateTimeAxis ImportError: DLL load failed while importing QtChart: 지정된 모듈을 찾을 수 없습니다. | 졸리운_곰 | 2024.01.28 | 430 |

