<p> 扩展你的PHP</p><p> PHP以方便快速的风格迅速在web系统开发中占有了重要地位. PHP本身提供了丰富的大量的函数及功能. 长话短说. 我们看看我们如何进行扩展.</p><p> 扩展的3种方式</p><ul><li>External Modules </li><li>Built-in Modules </li><li>The Zend Engine</li></ul><p> 3 种方式的优缺点可参见 PHP 手册:http://www.php.net/manual/en/zend.possibilities.php</p><p> extension dll</p><p> 1、首先我们去下个 php 的 source. 可以看到有以下几个重要的目录。ext,main,TSRM,Zend,另外我们可能还需要 bindlib_w32(需要你从 cvs 上下),及 PHP 目录下的 php4ts.lib。</p><p> 2、打开 VC,新建一个 Win32 Dynamic-Link Library,如下图:</p><img src="/content/uploadfile/200805/2008053117292662.gif" onclick="get_larger(this)" /></p><p> 3、点 ok,选择“An Empty Dll Project”,点击完成。</p><p> 4、设置 Build 的 Active Configuration,选 Release:)</p><img src="/content/uploadfile/200805/2008053117292873.gif" onclick="get_larger(this)" /><p> 5、Project->settings</p><img src="/content/uploadfile/200805/2008053117292829.gif" onclick="get_larger(this)" /><p> 预定义标识. 整个如下:</p><p> ZEND_DEBUG=0, COMPILE_DL_BINZY, ZTS=1, ZEND_WIN32, PHP_WIN32, HAVE_BINZY=1</p><img src="/content/uploadfile/200805/2008053117292809.gif" onclick="get_larger(this)" /><p> 这个是包含路径,上面所提及的几个路径都可以加入。</p><img src="/content/uploadfile/200805/2008053117292898.gif" onclick="get_larger(this)" /><p> 选择 Multithreaded DLL。</p><img src="/content/uploadfile/200805/2008053117292982.gif" onclick="get_larger(this)" /><p> 取名时随便的,要 link php4ts.lib~~ <img src="/content/uploadfile/200805/2008053117292923.gif" onclick="get_larger(this)" /> </p><p> o,忘了,别忘了加上 /Tc 的参数:</p><img src="/content/uploadfile/200805/2008053117292914.gif" onclick="get_larger(this)" /><p> 6、写代码.</p><p> 建个头,建个身体。</p><p> Binzy.h</p><p> <code>// Binzy Wu<br />// 2004-4-9<br />// PHP Extension<br />  <br />#if HAVE_BINZY<br />extern zend_module_entry binzy_module_entry;<br />#define binzy_module_ptr &binzy_module_entry<br />PHP_FUNCTION(hellobinzy); //<br />PHP_MINFO_FUNCTION(binzy); //<br />#endif </code></p><p> Binzy.c</p><p> <code>// Binzy Wu<br />// 2004-4-9<br />// PHP Extension<br />#include "php.h"<br />#include "Binzy.h"<br />#if HAVE_BINZY<br />#if COMPILE_DL_BINZY<br />ZEND_GET_MODULE(binzy)<br />#endif<br />function_entry binzy_functions[] = {<br />
PHP_FE(hellobinzy, NULL)<br />
{NULL, NULL, NULL}<br />};<br />zend_module_entry binzy_module_entry = {<br />
STANDARD_MODULE_HEADER,<br /> "binzy", binzy_functions, NULL, NULL, NULL, NULL, PHP_MINFO(binzy), NO_VERSION_YET, STANDARD_MODULE_PROPERTIES<br />};<br />PHP_MINFO_FUNCTION(binzy)<br />{<br />
php_info_print_table_start();<br />
php_info_print_table_row(2, "Binzy Extension", "Enable");<br />
php_info_print_table_end();<br />}<br />PHP_FUNCTION(hellobinzy)<br />{<br />
zend_printf("Hello Binzy");<br />}<br />#endif</code></p><p> 7、编译,修改 php.ini,restart apache,写个 php</p><p> <code><?php<br />
hellobinzy();<br />?> </code></p><p> hoho~~~</p><img src="/content/uploadfile/200805/2008053117293054.gif" onclick="get_larger(this)" /><p> phpinfo();</p><img src="/content/uploadfile/200805/2008053117293023.gif" onclick="get_larger(this)" /><p> 小结</p><p> 这算入门篇, 以后再一步步来~~. 慢慢深入, 有些我也不了解的。 偶是初学者。</p>