扩展你的 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一句话cmdshell新型 (非一句话木马)
Apr 18 PHP
PHP 程序员也要学会使用“异常”
Jun 16 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
Array of country list in PHP with Zend Framework
Oct 17 PHP
php实现快速排序法函数代码
Aug 27 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
php实现批量上传数据到数据库(.csv格式)的案例
Jun 18 PHP
PHP 记录访客的浏览信息方法
Jan 29 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
chrome原生方法之数组
2011/11/30 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
javascript关于继承解析
2016/05/10 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
Python中@property的理解和使用示例
2019/06/11 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
会计系个人求职信范文分享
2013/12/20 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
大学生个人求职信
2014/06/02 职场文书
心得体会的写法
2014/09/05 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
pandas中DataFrame重置索引的几种方法
2021/05/24 Python