用C/C扩展你的php 给你的PHP添加函数
: PP H5 powerprogramming//www . JB 51 . net/books/61020 . html的英文版PHP成功的主要原因之一是它有大量可用的扩展。无论web开发人员的需求是什么,他们最有可能出现在PHP发行包中。PHP发行包包括许多扩展,支持各种数据库、图形文件格式、压缩和XML技术扩展。随着扩展API的引入,PHP3有了很大的进步,扩展API的机制让PHP开发社区可以轻松开发几十个扩展。现在已经过了两个版本,API和PHP3还是很相似的。扩展的主要思想是尽可能对扩展编写人员隐藏PHP的内部机制和脚本引擎本身,只需要开发人员熟悉API即可。自己编写PHP扩展有两个原因。第一个原因是PHP需要支持一个她还没有支持的技术。这通常涉及包装一些现成的C库来提供PHP接口。例如,如果一个名为FooBase的数据库已经上市,您需要构建一个PHP扩展来帮助您从PHP调用FooBase的c函数库。这项工作可能只由一个人完成,然后由整个PHP社区共享(如果您愿意的话)。第二个不太常见的原因是,出于性能或功能的原因,您需要编写一些业务逻辑。如果以上两个原因与你无关,你觉得自己没有冒险精神,那么可以跳过这一章。本章教你如何编写相对简单的PHP扩展,以及如何使用一些扩展API函数。对于大多数打算开发定制PHP扩展的开发人员来说,它包含了足够的信息。学习编程课程最好的方法之一就是做一些极其简单的例子,这就是本章的线索。一旦你了解了基础知识,你就可以通过阅读文档、原始代码或参加邮件列表上的新闻组讨论来丰富自己。因此,本章重点介绍如何入门。在UNIX下,使用一个名为ext_skel的脚本来构建扩展的骨架,骨架信息是从描述扩展接口的定义文件中获取的。所以你需要用UNIX来构建一个骨架。Windows开发人员可以使用Windows ext_skel_win32.php代替ext_skel。但是,本章关于用您开发的扩展编译PHP的指导只涉及UNIX编译系统。本章对API的所有解释都与在UNIX和Windows下开发的扩展相关。阅读本章后,您可以学习如何构建简单的业务逻辑扩展。建议扩展C函数库的包,尤其是fopen()等一些标准的C文件操作函数。本节不介绍脚本引擎基本结构的一些知识,直接进入扩展编码讲解,不用担心不能马上获得抓住整个扩展的感觉。假设您正在开发一个网站,需要一个函数来重复字符串n次。下面是一个用PHP写的例子:复制代码如下:函数self _ concat ($ string,$ n){ $ result=' ';for($ I=0;$ I $ n;$i ){ $result。=$ string}返回$ result} self _ concat ('one ',3)返回' one one one '。self _ concat ('one ',1)返回' one '。假设由于一些奇怪的原因,您需要不时地调用这个函数,并向它传递一个长字符串和一个大值n.这意味着脚本中有大量的字符串连接和内存重新分配,这大大降低了脚本的执行速度。如果有一个函数可以分配大量和足够的内存来更快地存储结果字符串,然后重复$string n次,那么就不需要在每次循环迭代中分配内存。为扩展建立函数的第一步是编写函数定义文件,定义扩展提供的函数原型。在这个例子中,只有一行函数原型self_concat() :复制代码如下: string self _ concat(string str,int n)函数定义文件的一般格式是一行函数。可以定义可选参数,使用大量PHP类型,包括: bool、float、int、array等。将myfunctions.def文件保存到PHP原始代码目录树中。
是时候通过扩展的框架构造函数运行函数定义文件了。构造器脚本叫做ext_skel,它放在PHP源代码目录树的ext/目录中(README。EXT_SKEL在PHP源代码的主目录中提供了更多信息)。假设您将函数定义保存在一个名为myfunctions.def的文件中,并且您想要命名扩展myfunctions,运行以下命令来构建扩展的框架,并复制如下代码:/ext _ skel-ext name=my functions-proto=my functions . de。
版权声明:用C/C扩展你的php 给你的PHP添加函数是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。