扩展你的 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 相关文章推荐
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
May 07 PHP
php实现快速排序的三种方法分享
Mar 12 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
php实现复制移动文件的方法
Jul 29 PHP
php unicode编码和字符串互转的方法
Aug 12 PHP
PHP使用Redis替代文件存储Session的方法
Feb 15 PHP
php数据序列化测试实例详解
Aug 12 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 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输出1000以内质数(素数)示例
2014/02/16 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
用Python 执行cmd命令
2020/12/18 Python
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
大学运动会通讯稿
2014/01/28 职场文书
档案室主任岗位职责
2014/02/12 职场文书
会计电算化专业求职信
2014/06/10 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
小学教育见习报告
2014/10/31 职场文书
公证处委托书
2015/01/28 职场文书
英文邀请函
2015/02/02 职场文书
疾病证明书
2015/06/19 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL