扩展你的 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 加密与解密的斗争
Apr 17 PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
Yii PHP Framework实用入门教程(详细介绍)
Jun 18 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
PHP中feof()函数实例测试
Aug 23 PHP
php获取远程文件的内容和大小
Nov 03 PHP
CodeIgniter钩子用法实例详解
Jan 20 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 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 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
JavaScript 学习初步 入门教程
2010/03/25 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
医学院毕业生自荐信
2013/11/08 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
交通事故被告代理词
2015/05/23 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
node快速搭建后台的实现步骤
2022/02/18 NodeJs
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python