7

I have a PHP class I want to convert to a PHP extension. I checked some tutorials (tuxradar's writing extensions, php.net's extending php, and zend's extension writing) and it's a bit complicated.

I found the article "How to write PHP extensions" (ed note: site is defunct) and I wanted to know if it is possible to use this to make it grab a PHP class from a certain path (say /home/website1/public_html/api/class.php), execute it and return the class instance.

This way it will be usable in other websites that are hosted on the same server – each can simply call the function and it will obtain its own instance.

Is that possible?

4

5 回答 5

4

我现在理解的问题是,用户有一个 PHP 类,他们想与多人共享,但不想共享源代码。

对此有很多解决方案,它们通常涉及将 PHP 代码转换为某种字节码,并使用 PHP 扩展来运行字节码。我从未使用过任何这些解决方案,但我知道以下几点:

我确定还有其他人。只是谷歌的PHP 编译器,或PHP 加速器

于 2010-09-04T11:01:43.303 回答
0

不,没有工具可以做到这一点。

无论如何,您想要调用的内容可以通过auto_prepend_file轻松完成。只需使该 ini 指令指向具有类定义的 PHP 文件,然后它将可用于所有应用程序。

如果您不希望用户能够使用源代码,您可以使用几个 zend 扩展之一,这些扩展允许您预编译文件并以该形式使用它。

于 2010-09-04T22:47:10.737 回答
0

您可以通过编写PHP 扩展将底层 C 库函数扩展到 PHP 空间。但是,我认为在你的情况下你不需要写一个。

于 2010-09-12T08:58:48.867 回答
0

一句话:我不相信,我认为它的工作量远不止于此。

于 2010-09-04T01:07:49.297 回答
0

我知道这是一个老问题(从 2012 年开始),但是答案已经改变,现在有一个工具可以做到这一点。Jim Thunderbirds PHP-to-C Extension 工具集提供了将一个文件中的简单类一直到复杂的多文件多级命名空间框架并将其转换为 C 扩展的方法,然后可以将其安装到您的 PHP 中服务器。

虽然在许多用例中不需要这样做,因为普通 PHP 代码在某些情况下也能正常工作,但可以体验到显着的性能改进。信息页面显示,普通类(故意设计为耗时较长)作为普通 PHP 耗时 16.802139997482 秒,使用该工具构建的 PHP 扩展耗时 3.9628620147705。

作为一个额外的优势,该工具还提供了一个附加功能。在同一扩展中结合 PHP 代码(将转换为 C)和本机 C 代码的能力可以产生更大的性能增强。上面使用的相同示例仅使用了 0.14397192001343 秒工具,此时将大量密集代码移至冒泡排序 C 代码并从 PHP 代码中简单地调用它。

作为对最终开发人员的附带说明,使用扩展名的代码与将文件手动包含在正在开发的 PHP 文件中非常相似,除非它不必特别包含,因为它是通过 PHP 扩展组件完成的.

(免责声明:我不隶属于该开发人员,但很高兴遇到它,因为到目前为止它正在将我的一些密集类转换为 PHP 扩展而无需了解 C)。

于 2017-01-25T07:01:06.863 回答