扩展你的 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 友好URL的实现(吐血推荐)
Oct 04 PHP
php 设计模式之 单例模式
Dec 19 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
PHP实现图片压缩的两则实例
Jul 19 PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
Dec 29 PHP
php 7新特性之类型申明详解
Jun 06 PHP
php中yar框架实例用法讲解
Dec 27 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
植物选择:Botanic Choice
2017/02/15 全球购物
华为c/c++笔试题
2016/01/25 面试题
即兴演讲稿
2014/01/04 职场文书
仓库管理制度
2014/01/21 职场文书
项目合作意向书范本
2014/04/01 职场文书
个人授权委托书
2014/04/03 职场文书
学校火灾防控方案
2014/06/09 职场文书
搬迁通知
2015/04/20 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
校长新学期致辞
2015/07/30 职场文书
高中语文教学反思范文
2016/02/16 职场文书
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏