扩展你的 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应用程序来获取Web服务器的状态信息
Oct 09 PHP
php与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
php 引用(&amp;)详解
Nov 20 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 PHP
php MessagePack介绍
Oct 06 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 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实现通过ftp上传文件
2015/06/19 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
2015/11/27 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
分享几个超级震憾的图片特效
2012/01/08 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
javascript中this指向详解
2016/04/23 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
从头学Python之编写可执行的.py文件
2017/11/28 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
Unix里面如何在后台运行程序
2016/10/14 面试题
房地产项目策划书
2014/02/05 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
《永远的白衣战士》教学反思
2014/04/25 职场文书
励志演讲稿200字
2014/08/21 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
考试作弊检讨书
2015/01/27 职场文书
文明旅游倡议书
2015/04/28 职场文书
文艺晚会开场白
2015/05/29 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers