我有一个PHP类,我想转换为PHP扩展。我检查了一些教程(tuxradar's writing extensions,php.net's extending php和zend's extension writing),这有点复杂。
我发现文章"How to write PHP extensions"( ed note:网站已不存在),我想知道是否可以使用它来抓住它来自某个路径的PHP类(比如/home/website1/public_html/api/class.php
),执行它并返回类实例。
通过这种方式,它可以在同一服务器上托管的其他网站中使用 - 每个网站都可以简单地调用该函数,它将获得自己的实例。
这可能吗?
答案 0 :(得分:4)
我现在理解的问题是,用户有一个他们希望与多人共享的PHP类,但不想共享源代码。
有很多解决方案,它们通常会将PHP代码转换为某种字节代码,并使用PHP扩展来运行字节代码。我从未使用过任何这些解决方案,但我知道以下内容:
我确定还有其他人。只需Google PHP Compiler或PHP Accelerator。
答案 1 :(得分:0)
用一句话:我不相信,我认为它的工作要多得多。
答案 2 :(得分:0)
不,没有工具可以做到这一点。
无论如何,使用auto_prepend_file可以轻松完成您想要调用的内容。只需将该ini指令指向具有类定义的PHP文件,然后它就可供所有应用程序使用。
如果您不希望用户能够使用源,您可以使用几个zend扩展,允许您预编译该文件并以该格式使用它。
答案 3 :(得分:0)
您可以通过编写PHP extensions将底层C库函数扩展到PHP空间。但是,我认为在你的情况下你不需要写一个。
答案 4 :(得分:0)
我知道这是一个老问题(来自2012年),但答案已经改变,现在有一个工具可以做到这一点。 Jim Thunderbirds PHP-to-C扩展工具集提供了将简单类放在一个文件中直到复杂的多文件多级命名空间框架并将其转换为C扩展的方法,然后可以将其安装到PHP中服务器
虽然在许多用例中不需要这样做,因为普通的PHP代码在某些情况下可以正常工作,但是可以体验到显着的性能提升。信息页面显示一个普通的类(故意设计需要很长时间)使用16.802139997482秒作为普通的香草PHP,以及3.9628620147705作为使用该工具构建的PHP扩展。
作为附加优势,该工具还提供了额外的功能。能够在同一扩展中组合PHP代码(转换为C)和本机C代码,从而产生更高的性能增强。上面使用的相同示例只有工具0.14397192001343秒,当大部分密集代码被移动到冒泡排序C代码并且只是在PHP代码中调用它时。
作为一个侧面说明功能,最终开发人员使用扩展程序使用代码非常类似于手动将文件包含在正在开发的PHP文件中,除非它不必特别包含在内,因为它已完成通过PHP扩展组件。
(免责声明:我与这个开发人员没有任何关系,但我很高兴能够遇到它,因为它迄今为止将我的一些密集类转换为PHP扩展而不需要知道C)。