扩展你的 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计算2点经纬度之间的距离代码
Aug 12 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
php函数与传递参数实例分析
Nov 15 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
PHP设置images目录不充许http访问的方法
Nov 01 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 PHP
PHP如何防止用户重复提交表单
Dec 09 PHP
php命令行模式代码实例详解
Feb 26 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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与XML的PDF文档生成技术
2006/10/09 PHP
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
php删除数组元素示例分享
2014/02/17 PHP
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
python实现超市商品销售管理系统
2019/11/22 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
中学生获奖感言
2014/02/04 职场文书
公司授权委托书
2014/04/04 职场文书
教师业务培训方案
2014/05/01 职场文书
献爱心标语
2014/06/21 职场文书
大学课外活动总结
2014/07/09 职场文书
村委会贫困证明范本
2014/09/17 职场文书
模范教师材料大全
2014/12/16 职场文书
小班上学期个人总结
2015/02/12 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书