php扩展顾名思义,是用于增强php的功能,可以把现实功能的php代码放到php的底层用C语言实现,以后待博主自己调试完成将webdav编译到php的扩展成为一个.so文件的时候再发文章详细的说明。php扩展不必要自己完全的写代码,其实php官方本身就自带了一个小工具,叫做ext_skel。
具体实现的方法
切目录到你的php的源码的目录,找到ext,切到ext下,你就会发现ext_skel这个文件,下面你就需要新建一个文件,随便举个例子lazypeople.skel (linux command $ touch lazypeople.skel),然后对文件进行编辑,文件的内容写为:string lazypeople(string str),然后使用命令自动生成扩展的那么的文件,只需要./ext_skel –extname=lazypeople –proto=lazypeople.skel 这个命令也很好懂。
这时你就会发现自动生成了很多的函数
下面继续的工作就是编辑生成的文件以满足我们的功能
1.step1
编辑config.m4,去掉10 11 12行的注释,dnl定义的即是注释。
2.step2
编辑lazypeople.c,功能是按照输入的字符串生成a标签,找到对应的代码修改为:
PHP_FUNCTION(lazypeople) { char *str = NULL; int argc = ZEND_NUM_ARGS(); int str_len; char *result; if (zend_parse_parameters(argc TSRMLS_CC, "s", &str, &str_len) == FAILURE) return; str_len = spprintf(&result, 0, "<a href=\"%.78s\">Link</a>", str); RETURN_STRINGL(result, str_len, 0); }
3.step3 开始编译
在当前目录下输入linux命令
/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config #(如果你的php安装路径不是这个请对应修改!) make make test make install
4.step4
到这里扩展的so文件已经在 modules文件夹下了,而且已经安装到你的php的扩展文件下面,现在只需要修稿你的php.ini设置了,在扩展文件那加上一句extension=/usr/local/php/ext/lazypeople.so ,然后重启你的php即可。
此时你就可以在全局的php脚本中使用lazypeople($str)函数了,不需要require任何的定义文件。是不是很神奇,就相当于给php新增可不少的内置函数以满足你的要求。