扩展你的 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 ADODB使用方法集锦
Mar 25 PHP
简单的PHP留言本实例代码
May 09 PHP
深入了解PHP类Class的概念
Jun 14 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
PHP setTime 设置当前时间的代码
Aug 27 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
php中文字符串截取方法实例总结
Sep 30 PHP
yii2带搜索功能的下拉框实例详解
May 12 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 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返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
PHP数组操作类实例
2015/07/11 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
详解php用static方法的原因
2018/09/12 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
情人节之礼 js项链效果
2012/02/13 Javascript
jquery禁用右键示例
2014/04/28 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
2014/06/25 Python
python类继承用法实例分析
2015/05/27 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
django缓存配置的几种方法详解
2018/07/16 Python
python对象与json相互转换的方法
2019/05/07 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
应届毕业生自我鉴定范文
2013/12/27 职场文书
养殖项目策划书范文
2014/01/13 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
营销与策划专业求职信
2014/06/20 职场文书
森林防火宣传标语
2014/06/27 职场文书
五心教育心得体会
2014/09/04 职场文书