扩展你的 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查询搜索引擎排名位置的代码
Jan 05 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
Jun 30 PHP
Yii CGridView用法实例详解
Jul 12 PHP
ZendFramework2连接数据库操作实例
Apr 18 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
PHP回调函数简单用法示例
May 08 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
PHP常用函数之格式化时间操作示例
Oct 21 PHP
Laravel中Kafka的使用详解
Mar 24 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插入排序实现代码
2013/04/04 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
php实现数字补零的方法总结
2018/09/12 PHP
JavaScript 撑出页面文字换行
2009/06/15 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
Django 用户认证组件使用详解
2019/07/23 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
python路径的写法及目录的获取方式
2019/12/26 Python
通过实例解析python描述符原理作用
2020/01/22 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
家长对老师的感言
2014/03/11 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python