扩展你的 PHP 之入门篇


Posted in PHP onDecember 04, 2006

扩展你的php

  1. 扩展你的php
  2. 扩展的3种方式
  3. extension dll方式的扩展
  4. 小结

首先注意,以下所有的一切皆在 win 下进行,使用的工具的 VC++6.0。

扩展你的PHP

PHP以方便快速的风格迅速在web系统开发中占有了重要地位. PHP本身提供了丰富的大量的函数及功能. 长话短说. 我们看看我们如何进行扩展.

扩展的3种方式

  • External Modules
  • Built-in Modules
  • The Zend Engine

3 种方式的优缺点可参见 PHP 手册:http://www.php.net/manual/en/zend.possibilities.php

extension dll

1、首先我们去下个 php 的 source. 可以看到有以下几个重要的目录。ext,main,TSRM,Zend,另外我们可能还需要 bindlib_w32(需要你从 cvs 上下),及 PHP 目录下的 php4ts.lib。

2、打开 VC,新建一个 Win32 Dynamic-Link Library,如下图:

扩展你的 PHP 之入门篇

3、点 ok,选择“An Empty Dll Project”,点击完成。

4、设置 Build 的 Active Configuration,选 Release:)

扩展你的 PHP 之入门篇

5、Project->settings

扩展你的 PHP 之入门篇

预定义标识. 整个如下:

ZEND_DEBUG=0, COMPILE_DL_BINZY, ZTS=1, ZEND_WIN32, PHP_WIN32, HAVE_BINZY=1

扩展你的 PHP 之入门篇

这个是包含路径,上面所提及的几个路径都可以加入。

扩展你的 PHP 之入门篇

选择 Multithreaded DLL。

扩展你的 PHP 之入门篇

取名时随便的,要 link php4ts.lib~~ 扩展你的 PHP 之入门篇 
o,忘了,别忘了加上 /Tc 的参数:

扩展你的 PHP 之入门篇

6、写代码.

建个头,建个身体。
Binzy.h

// Binzy Wu
// 2004-4-9
// PHP Extension

#if HAVE_BINZY
extern zend_module_entry binzy_module_entry;
#define binzy_module_ptr &binzy_module_entry

PHP_FUNCTION(hellobinzy); //
PHP_MINFO_FUNCTION(binzy);
//
#endif

Binzy.c

// Binzy Wu
// 2004-4-9
// PHP Extension

#include "php.h"
#include "Binzy.h"

#if HAVE_BINZY

#if COMPILE_DL_BINZY
ZEND_GET_MODULE(binzy)
#endif

function_entry binzy_functions[] = {
    
PHP_FE(hellobinzy, NULL
)
    {
NULL, NULL, NULL
}
};

zend_module_entry binzy_module_entry = {
    
STANDARD_MODULE_HEADER
,
    
"binzy", binzy_functions, NULL, NULL, NULL, NULL, PHP_MINFO(binzy), NO_VERSION_YET,
STANDARD_MODULE_PROPERTIES
};

PHP_MINFO_FUNCTION(binzy)
{
    
php_info_print_table_start
();
    
php_info_print_table_row(2, "Binzy Extension", "Enable"
);
    
php_info_print_table_end
();
}

PHP_FUNCTION(hellobinzy)
{
    
zend_printf("Hello Binzy"
);
}

#endif

7、编译,修改 php.ini,restart apache,写个 php

<?php
    hellobinzy
();
?>

hoho~~~

扩展你的 PHP 之入门篇

phpinfo();

扩展你的 PHP 之入门篇

小结

这算入门篇, 以后再一步步来~~. 慢慢深入, 有些我也不了解的。 偶是初学者。

PHP 相关文章推荐
PHP新手上路(六)
Oct 09 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
php设置编码格式的方法
Mar 05 PHP
PHP设计模式之调解者模式的深入解析
Jun 13 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
php将html转成wml的WAP标记语言实例
Jul 08 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
Oct 15 PHP
php禁用cookie后session设置方法分析
Oct 19 PHP
PHP之十六个魔术方法详细介绍
Nov 01 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 PHP
用 PHP5 轻松解析 XML
Dec 04 #PHP
PHP 已经成熟
Dec 04 #PHP
PHP 选项及相关信息函数库
Dec 04 #PHP
PHP 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 #PHP
windows xp下安装pear
Dec 02 #PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
Dec 02 #PHP
php字符串截取问题
Nov 28 #PHP
You might like
php数组中删除元素之重新索引的方法
2014/09/16 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
linux下php上传文件注意事项
2016/06/11 PHP
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
应届毕业生求职信
2013/11/30 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
高一生物教学反思
2014/01/17 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
故意杀人案辩护词
2015/05/21 职场文书
详解Python类和对象内容
2021/06/22 Python
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技