扩展你的 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自定义函数之递归删除文件及目录
Aug 08 PHP
使ecshop模板中可引用常量的实现方法
Jun 02 PHP
php将金额数字转化为中文大写
Jul 09 PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 PHP
laravel 实现设置时区的简单方法
Oct 10 PHP
php7性能提升的原因详解
Oct 13 PHP
laravel 解决强制跳转 https的问题
Oct 22 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图片加中文水印实现代码分享
2012/10/31 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
AngularJS中$http的交互问题
2017/03/29 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
支付宝小程序实现省市区三级联动
2020/06/21 Javascript
Python语言描述随机梯度下降法
2018/01/04 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
python绘制雷达图实例讲解
2021/01/03 Python
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
测量工程专业求职信
2014/02/24 职场文书
双方协议书
2014/04/22 职场文书
研发工程师岗位职责
2014/04/28 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
普通员工辞职信范文
2015/05/12 职场文书
小学校长开学致辞
2015/07/29 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
Python pyecharts绘制条形图详解
2022/04/02 Python