IT技术博客大学习 共学习 共进步

PHP 模块编写需要注意的一个问题---- php模块及函数名都定义成小写吧

PHPor 的Blog 2010-04-16 13:27:10 浏览 4,303 次
   这是一个困扰我很长时间的问题,曾经由于没有思路,一直搁置没有去追究,现在要对该模块做一些修改,就想顺便把这个问题给查明白了,事情是这样的...

    我们写了一个PHP模块String2Hash,其实里面只有一个函数叫: String2Hash() ,只是要将一个字符串hash成一个整数,由于PHP中的整型都是有符号的,该算法涉及移位,求和,求模,等操作,用PHP实现比较麻烦,就用C写了一个PHP的模块。

    编译完之后,执行:

    php --re String2Hash

    就报错如下:

    PHP Warning:  Internal error: Cannot find extension function String2Hash in global function table in Unknown on line 0

    虽然有警告,但是该模块时可以正常加载和使用的; 一般来讲,程序员只关心error,不关心Warning的,但是我就想知道个究竟。

    第一步: 先做一个helloworld模块,这个完全是生成的,只有很少的修改,结果是没有报错的。

    第二步: 将自己的函数添加进去,开始报错。

    第三步: 将自己的函数重命名为myhash, 编译不再报错。问题基本出现在函数名上了。可能是大小写的问题吧?突然想到报错提示,可能是global function table这个数组的key是区分大小写的?

    第四步: 将String2Hash 重命名为string2hash, 为了保险,将所有出现的地方都改成小写吧,反正PHP函数是不区分大小写的,改成小写也无妨。 编译不再报错,测试通过,问题解决

    have fun!!!

建议继续学习

  1. 在Apache2.2.XX下安装Mod-myvhost模块 (阅读 12,903)
  2. Nginx模块开发入门 (阅读 11,041)
  3. nginx模块开发 (阅读 5,603)
  4. windows批量重命名文件名,自动修改大小写 (阅读 5,323)
  5. CommonJS 的模块系统,AMD 和 Wrappings, 以及 RequireJS (阅读 5,162)
  6. FarmVille(美版开心农场)谈架构:所有模块都是一个可降级的服务 (阅读 4,362)
  7. 搭好了apache模块的开发环境 (阅读 4,364)
  8. mysql数据库表名的大小写问题 (阅读 4,345)
  9. 使用 Perl 来开发 Nginx 的模块 (阅读 4,042)
  10. php无法加载pcre.so的解决办法 (阅读 3,843)