|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
参加PHP开发学习,或许只是一次偶然的想法吧!只是想在走向社会之前体验、学习在一个公司或者说是项目团队之中如何去更有效的沟通、交流、共同合作,还有就是为毕业实习找工作增加伐码。对照|函数 作者: 飘在四方
自己还没测试过,有乐趣的可以测试下
Yorgo Sun 2002/01/22
php法式写的工夫长了,天然对他所供应的功效洞若观火,他所供应的一大堆功效,真是感觉很好用,但有时分会发明php也短少一些功效,本人老是会发生为php添加一些自界说的功效的设法。一朝一夕,终究明天憋不住了,入手下手下手研讨若何添加。
下载一个php的源代码包,这里利用的是php 4.0.5版,解压后会看到php的根目次下会有README.EXT_SKEL如许一个文件,翻开具体浏览了一下,发明了一个十分好用的东西,这个东西可以帮你构建一个空的php扩大,然后你向外面添加响应的代码就能够完成你本人的功效扩大了。上面咱们就来引见若何利用这个东西。
起首转移你的目次到php的目次下的ext目次,假如你只需求一个根基的扩大框架的话,履行上面的号令:
./ext_skel --extname=module_name
module_name是你本人可以选择的扩大模块的名字,例如我选择的my_module。履行东西后会主动在ext目次下创立你选择的module_name名字的目次,外面已生成了相干的代码,这些代码中只需求调剂config.m4文件中的三行正文就能够正常的编译带这个自界说扩大模块的php了。在php的根目次履行以下操作就能够失掉。
./buildconf
./configure --enable-module_name
make
上面我来演示创立my_module扩大框架的全进程,为了更无效果,咱们来完成一个php的扩大功效,在php中挪用这个功效可以在web页面中显示hello world这个经典单词。
在php目次下的ext目次中,履行上面的号令
./ext_skel --extname=my_module
失掉反应了局:
Creating directory my_module
Creating basic files: config.m4 Makefile.in .cvsignore my_module.c php_my_module.h tests/001.phpt my_module.php [done].
To use your new extension, you will have to execute the following steps:
1. $ cd ..
2. $ vi ext/my_module/config.m4
3. $ ./buildconf
4. $ ./configure --[with|enable]-my_module
5. $ make
6. $ ./php -f ext/my_module/my_module.php
7. $ vi ext/my_module/my_module.c
8. $ make
Repeat steps 3-6 until you are satisfied with ext/my_module/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.
假如你能看懂下面的器材,那就照着去做。假如不是太分明的话,依照我上面的提醒来做也能够。
Cd my_module
起首进入my_module目次
vi config.m4
利用文本编纂器翻开config.m4文件,文件内容大致以下:
dnl $Id$
dnl config.m4 for extension my_module
dnl don't forget to call PHP_EXTENSION(my_module)
dnl Comments in this file start with the string 'dnl'.
dnl Remove where necessary. This file will not work
dnl without editing.
dnl If your extension references something external, use with:
dnl PHP_ARG_WITH(my_module, for my_module support,
dnl Make sure that the comment is aligned:
dnl [ --with-my_module Include my_module support])
dnl Otherwise use enable:
dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,
dnl Make sure that the comment is aligned:
dnl [ --enable-my_module Enable my_module support])
if test "$PHP_MY_MODULE" != "no"; then
dnl If you will not be testing anything external, like existence of
dnl headers, libraries or functions in them, just uncomment the
dnl following line and you are ready to go.
dnl Write more examples of tests here...
PHP_EXTENSION(my_module, $ext_shared)
Fi
依据你本人的选择将
dnl PHP_ARG_WITH(my_module, for my_module support,
dnl Make sure that the comment is aligned:
dnl [ --with-my_module Include my_module support])
修正成
PHP_ARG_WITH(my_module, for my_module support,
Make sure that the comment is aligned:
[ --with-my_module Include my_module support])
或将
dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,
dnl Make sure that the comment is aligned:
dnl [ --enable-my_module Enable my_module support])
修正成
PHP_ARG_ENABLE(my_module, whether to enable my_module support,
Make sure that the comment is aligned:
[ --enable-my_module Enable my_module support])
普通我会选择后者,然后保留加入。假如你对vi文本编纂器的操作有坚苦的话,请参考响应的申明文章,这里就不再具体描写了。
Vi my_module.c
将文件个中的以下代码停止修正
/* Every user visible function must have an entry in my_module_functions[].
*/
function_entry my_module_functions[] = {
PHP_FE(say_hello, NULL) /* |
|