一些php wamp / lamp软件包附带php扩展,如php_amf,php_db,php_gd2,我必须激活扩展,或者如果默认情况下没有安装扩展名。
我的问题一般是,这些扩展与图书馆有何不同? 具体我想知道,扩展程序是否可以转换为项目本身加载的库?目标是调用库而无需像php扩展需要的特殊安装。有时,当您使用共享主机时,您没有足够的权限来安装新的扩展程序。
答案 0 :(得分:9)
PHP扩展是一个C或C ++程序,它包含在Zend Engine中,它在PHP安装中提供PHP函数和类。
PHP库是一个用本机PHP编写的程序,它可能会也可能不会使用扩展来在PHP程序中提供函数和类。
尽管将PHP库转换为扩展可能并且相当容易(假设您有足够的C ++知识),但相反的过程可能是一个繁琐的过程,因为C ++程序可能使用PHP中不可用的函数和对象
将PHP库转换为扩展名更容易,因为很明显PHP函数都是以C语言提供的,因为PHP是用C语言编写的。然而,反过来并非总是如此。
答案 1 :(得分:4)
PHP扩展是用另一种语言(通常是C或C ++)编写的,并扩展了PHP以允许它做一些在PHP实践中无法完成的事情。例如,与PHP内置函数尚未支持的操作系统或Web服务器直接交互。扩展还允许从PHP重用其他语言编写的现有代码;虽然理论上可以用PHP重写库,但这样做通常是不切实际的,并且重用代码可以用更少的工作量提供更多的功能,并允许将代码的未来更新很少或不费力地合并。
PHP库只是PHP代码的共享集合,因此虽然它允许代码被多个开发人员重用,但它不能让你做任何你不能(理论上)编写PHP代码的东西。自己。
在将扩展名转换为库方面:它取决于扩展程序的作用。如果它可以用原始PHP完成,那么你可以转换它,但它几乎完全重写了该功能。它也可能使代码变慢。
答案 2 :(得分:2)
可以将扩展程序转换为库
不是自动,不是。扩展名不是用PHP编写的;因此不能简单地转换。编写执行等效操作的PHP当然是可能的,但是这样的脚本会比原始扩展慢得多,因为PHP的计算效率相对较低(与本机/编译语言相比)。