澳门新葡萄京官网注册扩展你的 PHP 之入门篇

扩展你的PHP

扩展你的php

PHP以方便快速的风格迅速在web系统开发中占有了重要地位.
PHP本身提供了丰富的大量的函数及功能. 长话短说. 我们看看我们如何进行扩展.

扩展你的php 扩展的3种方式 extension dll方式的扩展 小结

扩展的3种方式

首先注意,以下所有的一切皆在 win 下进行,使用的工具的 VC++6.0。

External Modules Built-in Modules The Zend Engine

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

3 种方式的优缺点可参见 PHP 手册:

External Modules Built-in Modules The Zend Engine

extension dll

3 种方式的优缺点可参见 PHP
手册:
dll**1、首先我们去下个 php 的 source.
可以看到有以下几个重要的目录。ext,main,TSRM,Zend,另外我们可能还需要
bindlib_w32,及 PHP 目录下的 php4ts.lib。2、打开 VC,新建一个 Win32
Dynamic-Link Library,如下图:

1、首先我们去下个 php 的 source.
可以看到有以下几个重要的目录。ext,main,TSRM,Zend,另外我们可能还需要
bindlib_w32(需要你从 cvs 上下),及 PHP 目录下的 php4ts.lib。

3、点 ok,选择“An Empty Dll Project”,点击完成。4、设置 Build 的 Active
Configuration,选 Release:)

2、打开 VC,新建一个 Win32 Dynamic-Link Library,如下图:

5、Project->settings

3、点 ok,选择An Empty Dll Project,点击完成。

预定义标识. 整个如下:

4、设置 Build 的 Active Configuration,选 Release:)

ZEND_DEBUG=0, COMPILE_DL_BINZY, ZTS=1, ZEND_WIN32, PHP_WIN32,
HAVE_BINZY=1

5、Project-settings

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

预定义标识. 整个如下:

选择 Multithreaded DLL。

ZEND_DEBUG=0, COMPILE_DL_BINZY, ZTS=1, ZEND_澳门新葡萄京官网注册,WIN32, PHP_WIN32,
HAVE_BINZY=1

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

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

6、写代码. 建个头,建个身体。Binzy.h

选择 Multithreaded DLL。

// 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; // PHP_MINFO_FUNCTION; // #endif

取名时随便的,要 link php4ts.lib~~

Binzy.c

o,忘了,别忘了加上 /Tc 的参数:

// Binzy Wu // 2004-4-9 // PHP Extension #include “php.h” #include
“Binzy.h” #if HAVE_BINZY #if COMPILE_DL_BINZY ZEND_GET_MODULE
#endif function_entry binzy_functions[] = { PHP_FE {NULL, NULL,
NULL} }; zend_module_entry binzy_module_entry = {
STANDARD_MODULE_HEADER, “binzy”, binzy_functions, NULL, NULL, NULL,
NULL, PHP_MINFO, NO_VERSION_YET, STANDARD_MODULE_PROPERTIES };
PHP_MINFO_FUNCTION { php_info_print_table_start();
php_info_print_table_row(2, “Binzy Extension”, “Enable”);
php_info_print_table_end(); } PHP_FUNCTION { zend_printf; }
#endif

6、写代码.

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

建个头,建个身体。

hoho~~~

Binzy.h

phpinfo();

// Binzy Wu// 2004-4-9// PHP Extension #if HAVE_BINZYextern zend_module_entry binzy_module_entry;#define binzy_module_ptr binzy_module_entryPHP_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_BINZYZEND_GET_MODULE(binzy)#endiffunction_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~~~

phpinfo();

小结

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注