0

我正在编写一个 Wordpress 插件,因此它将被不同的用户和不同的 PHP 版本使用。问题是我发现某些函数(如 json_encode)在 PHP 5.3 中可用,而在 PHP 5.2 或更低版本中不可用。这造成了一个大问题,因为大多数用户没有最新版本。

我现在想,在完成插件 99% 之后,执行以下操作

  1. 使用某种应用程序测试我的代码。我可以放最低 PHP 版本的地方。那个应用程序。或者程序会找出像 json_encode 这样的函数。不确定这是否可能,但可能会解决我的大部分问题。
  2. 是否可以在 PHP 中获取 PHP 函数的本机代码。我不确定它们是否是用 PHP 编写的,如果是,我在哪里可以得到它们。如果没有,找到这些功能的替代品的最佳选择是什么。当然,我不想从头开始重新编码
  3. 实现这些功能的最佳方法是什么。我发现一些开发人员检查 PHP 版本,而其他人检查功能是否存在。哪一个是最好的,为什么?

还想了解您的部署策略以及您如何处理该特定问题。

4

4 回答 4

2

2.没有。它们由用 C 编写的已编译扩展提供。对于 json_encode(顺便说一句,自 5.2 而不是 5.3 可用),您可以使用Zend_Json作为替代

3.如果您想100%确定,检查功能是否存在是最好的。毕竟,可以运行自编译版本的 PHP,但并非所有核心功能都可用。检查 PHP 版本号,以了解名称空间、异常链接等功能是否可用。

于 2011-02-01T10:45:02.543 回答
2

你可以使用梨的

  • PHP_Compat为旧版本的 PHP 提供缺失的功能和
  • PHP_CompatInfo找出运行一段代码所需的最低版本和扩展

如果您想提供您自己的函数或类的用户态实现,建议您将它们包装到function_existsclass_exists块中,这样它们就不会干扰提供这些方法的 PHP 版本。

于 2011-02-01T10:45:55.143 回答
1

我真的不知道 Wordpress 插件是如何工作的,但除非您真的希望能够在旧 PHP 版本上运行,否则您需要检查可用功能并提供替代方案,这可能会导致您的代码混乱。

If you can, and want to educate your users, you can simply version_compare() function to compare version against a well tested and fully functionnal PHP version and throw a educationnal and explicative message to your end users.

if (version_compare(PHP_VERSION, '5.3.0') <= 0) {
    echo 'You need to run PHP 5.3.0 to use this plugin';
}
于 2011-02-01T10:51:58.407 回答
0

Re 1.) 可能有这样的应用程序,但也可能没有。您通常想要做的是密切关注您在手册中使用的每个功能,其中说明需要哪些 PHP 版本。

Re 2.) 如果函数仅是 PHP 5.3 或 5.2,您通常会在用户贡献的注释或 Stack Overflow 上找到替代建议。(但要小心你使用的东西,UCN 中的很多代码都很糟糕——但在这种情况下,通常至少有一条评论这么说。)

关于。3.) 这可能无关紧要,但检查函数是否存在肯定是最安全的方法。

于 2011-02-01T10:45:22.063 回答