百度空间 | 百度首页 
 
查看文章
 
在PHP扩展中包装C++类
2009-11-01 17:10

原文: http://devzone.zend.com/article/4486

很久之前,当我遇到这片文章的时候我就将其收藏了,这段时间停了下剑三,而且今天北京下雪,所以想将它翻译一下。不过本人因为换USB无线网卡的原因,Linux系统已经完全格掉了,现在是个纯粹的Windows流。Now,下面给出在Windows下的实践方法。

注,请不要将原文的源代码与本文的源代码混用,在有些地方可能不尽相同
阅读本文不需要参照原文,不需要使用原文中的前置步骤(其讲述的是在Linux下的构建步骤)


从cn.php.net 上下载 PHP 源代码以及二进制发行版 (下面使用 5.2.11),解压。

从命令提示符浏览到PHP源代码包的 ext 目录下,执行命令:

php -q ext_skel_win32.php --extname=vehicles

命令提示符输出结果应该如下:

Creating directory vehicles
Creating basic files: config.m4 config.w32 .cvsignore vehicles.c php_vehicles.h
CREDITS EXPERIMENTAL tests/001.phpt vehicles.php [done].

To use your new extension, you will have to execute the following steps:

1. $ cd ..
2. $ vi ext/vehicles/config.m4
3. $ ./buildconf
4. $ ./configure --[with|enable]-vehicles
5. $ make
6. $ ./php -f ext/vehicles/vehicles.php
7. $ vi ext/vehicles/vehicles.c
8. $ make

Repeat steps 3-6 until you are satisfied with ext/vehicles/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.

看看 ext 目录下,应该多出一个文件夹 vehicles 。双击文件夹下的 vehicles.dsp (本人因为需要使用OCCI的关系,本机为Visual Studio2005,请注意不同VC版本的细微差异),项目中应该包含两个文件 php_vehicles.h 、 vehicles.c。

在项目 vehicles 上点击右键,添加 =》类,类名 Car。项目中应该多出两个文件 Car.h 、Car.cpp,修改两个文件定义如下:

Car.h 文件:



Car.cpp 文件:



然后,修改 vehicles.c 文件,该文件很大仅给出修改部分代码:




上面部分添加在 function_entry car_methods[]     = { 之前
修改 PHP_MINIT_FUNCTION 函数如下:



修改完毕后,按 Release_TS 配置 生成, 在 PHP源代码目录的 release_ts 目录下可以看到 php_vehicles.dll 已经静静的躺在那里了。拷贝到 PHP二进制ext目录下,修改 php.ini 加载这个扩展,运行原文中例子:


它运行的非常棒!


类别:默认分类 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu