扩展你的PHP之入门篇

转载 2004年10月12日 11:01:00
作者:Binzy Wu 来源:超越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, 如下图
Click to fullsize


3. 点ok, 选择'An Empty Dll Project', and click finish.

4. 设置Build的Active Configuration. 选Release:)
Click to fullsize


5. Project->settings.
Click to fullsize


预定义标识. 整个如下.ZEND_DEBUG=0,COMPILE_DL_BINZY,ZTS=1,ZEND_WIN32,PHP_WIN32,HAVE_BINZY=1
Click to fullsize


这个是包含路径,上面所提及的几个路径都可以加入.
Click to fullsize


选择Multithreaded DLL,
Click to fullsize


取名时随便的, 要link php4ts.lib~~ :)
o, 忘了, 别忘了加上 /Tc的参数.
Click to fullsize


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



6. 编译...修改php.ini, restart apache, 写个php


<?
hellobinzy();
?>



hoho~~~

Click to fullsize


phpinfo();
Click to fullsize


小结
这算入门篇, 以后再一步步来~~. 慢慢深入, 有些我也不了解的。 偶是初学者。

Binzy Wu

有任何疑问请到讨论区参加本文章相关讨论:
http://club.phpe.net/index.php?act=ST&f=15&t=4809

扩展你的 PHP 之入门篇

扩展你的PHP   PHP以方便快速的风格迅速在web系统开发中占有了重要地位. PHP本身提供了丰富的大量的函数及功能. 长话短说. 我们看看我们如何进行扩展.   扩展的3种方式 ...
  • bjash
  • bjash
  • 2013年03月24日 13:44
  • 494

Windows驱动开发遇到的问题(二)

今天工作遇到的问题: 1.我是从WDF框架开始学习驱动,编译环境也是VS2012+WDK8的组合,驱动工程完成以后,生成的驱动文件只有VISTA,WIN7和WIN8的版本,虽然说 微软已经停止了XP系...
  • pengxiao618
  • pengxiao618
  • 2014年03月19日 10:01
  • 845

Windows驱动开发之准备篇

近日,公司人心浮动,我们小组负责驱动开发的小伙也提离职了,领导说,让我这个组长自己搞定。于是乎,开始跨界准备“Windows驱动开发”的学习。废话不多说,开始准备学习资料和熟悉“Windows驱动开发...
  • Sagittarius_Warrior
  • Sagittarius_Warrior
  • 2016年03月01日 09:38
  • 862

Windows 驱动入门(一)

本博客为Windows驱动开发的基础
  • u012192662
  • u012192662
  • 2014年08月23日 12:23
  • 2039

Windows驱动开发开发环境搭建

一、开发环境搭建: (1)WDK: 官方下载及介绍:http://msdn.microsoft.com/zh-cn/library/windows/hardware/ff557573(v=vs.85)...
  • knightzj
  • knightzj
  • 2015年01月08日 20:07
  • 697

线段树之入门篇

线段树(interval tree) 是把区间逐次二分得到的一树状结构,它反映了包括归并排序在内的很多分治算法的问题求解方式。   上图是一棵典型的线段树,它对区间[1,10]进行分割,直到单...
  • u013446688
  • u013446688
  • 2014年10月02日 07:42
  • 2063

菜鸟学php扩展 之 详解php扩展的变量(四)

前言经过前文 菜鸟学php扩展 之 详解扩展函数的传参(如何获取参数)(三) ,基本上已经明白了php调用扩展时候,按道理应该要是来记录一下,如何返回结果的。但是突然总结时候发现,结果的返回之前必须...
  • u011957758
  • u011957758
  • 2017年05月23日 00:47
  • 769

驱动开发之 Windows驱动编程基础教程(1.1-1.3)

Windows驱动编程基础教程(1.1-1.3) 1.1 使用字符串结构 常常使用传统C语言的程序员比较喜欢用如下的方法定义和使用字符串: char *str = { “my first str...
  • liyun123gx
  • liyun123gx
  • 2014年05月23日 11:19
  • 805

怎么样获取PHP变量的变量名之扩展实现

很长时间没有更新博客了. 一来最近工作比较忙,没有时间好好研究问题, 二是觉得没有很好的材料可以写. 也有一些没有彻底研究透的问题,写着写着没有了头绪,都扔在了草稿箱里了. 这次顺带也要更新一下博客的...
  • da2015
  • da2015
  • 2015年01月25日 11:48
  • 295

hexo助小白打造个人博客之入门篇

本人一直想拥有一个个人的技术博客,苦恼不知如何开始。作为一个小白,还是从最简单的入手为好,在多方查找资料后,决定基于github+hexo打造一个简单的个人博客。下面我简单记录下过程。 1.为什...
  • weixin_41196185
  • weixin_41196185
  • 2018年01月24日 21:53
  • 135
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:扩展你的PHP之入门篇
举报原因:
原因补充:

(最多只允许输入30个字)