8

一些 php wamp/lamp 包附带了 php 扩展,如 php_amf、php_db、php_gd2,我只需要激活扩展,或者如果默认情况下没有安装扩展。

我的一般问题是,这些扩展与库有何不同?具体来说,我想知道,可以将扩展转换为加载到项目本身中的库吗?目标是在没有特殊安装(如 php 扩展需要)的情况下调用库。有时,当您使用共享主机时,您没有足够的权限来安装新的扩展程序。

4

3 回答 3

13

PHP 扩展是一个 C 或 C++ 程序,包裹在 Zend 引擎中,在 PHP 安装中提供 PHP 函数和类。

PHP 库是用原生 PHP 编码的程序,它可能使用也可能不使用扩展来在 PHP 程序中提供函数和类。

虽然将 PHP 库转换为扩展是可能且相当容易的(假设您有足够的 C++ 知识),但相反的过程可能是一个乏味的过程,因为 C++ 程序可能使用 PHP 中不可用的函数和对象。

将 PHP 库转换为扩展更容易,因为显然 PHP 函数都以 C 语言提供,无论哪种方式,因为 PHP 是用 C 编码的。然而,情况并非总是如此。

于 2011-02-10T17:24:32.913 回答
4

PHP 扩展是用另一种语言(通常是 C 或 C++)编写的,并扩展了 PHP 以允许它做一些 PHP 在实践中无法做到的事情。例如,与 PHP 内置函数尚不支持的操作系统或 Web 服务器的直接交互。扩展还允许从 PHP 重用用其他语言编写的现有代码;尽管理论上该库可以用 PHP 重写,但这样做通常是不切实际的,并且重用代码可以更轻松地提供更多功能,并允许将来对代码进行更新而无需付出任何努力。

PHP 库只是 PHP 代码的共享集合,因此尽管它允许多个开发人员重复使用代码,但它不能让您做任何您不能(理论上)为自己编写 PHP 代码的事情。

在将扩展转换为库方面:这取决于扩展的作用。如果可以使用原始 PHP 完成,那么您可以转换它,但这几乎是对功能的完全重写。它也可能使代码变慢。

于 2011-02-10T17:25:43.840 回答
2

扩展可以变成库吗

不是自动的,没有。扩展不是用 PHP 编写的;因此它不能简单地转换。当然可以编写执行等效操作的 PHP,但是这样的脚本会比原始扩展慢得多,因为 PHP 的计算效率相对较低(与本机/编译语言相比)。

于 2011-02-10T17:33:45.303 回答