我正在编写一个Wordpress插件,因此它将被不同的用户和不同的PHP版本使用。问题是我发现一些函数(如json_encode)在PHP 5.3中可用,而在PHP 5.2或更低版本中不可用。这会产生一个大问题,因为大多数用户没有最新版本。
我现在想要在完成99%的插件后,执行以下操作
还希望了解您的部署策略以及您如何处理该特定问题。
答案 0 :(得分:2)
2.Nope。它们由用C编写的编译扩展提供。对于json_encode(BTW自5.2以后可用,而不是5.3),您可以使用Zend_Json作为替代
3.如果你想100%确定,检查功能是否存在是最好的。毕竟,可以运行PHP的自编译版本,而不是所有核心功能都可用。检查PHP版本号,以了解命名空间,异常链等功能是否可用。
答案 1 :(得分:2)
您可以使用PEAR的
PHP_Compat
为旧版本的PHP和PHP_CompatInfo
找出运行代码所需的最低版本和扩展程序如果您想提供自己的用户态函数或类实现,建议您将它们包含在function_exists
或class_exists
块中,这样它们就不会干扰提供这些方法的PHP版本。
答案 2 :(得分:1)
我真的不知道Wordpress插件是如何工作的,但除非你真的希望你能够在旧的PHP版本上运行,否则你需要检查可用的功能并提供一个替代方案,这可能会导致代码很乱。
如果可以,并希望教育您的用户,您可以简单地version_compare()
功能将版本与经过良好测试和完全功能的PHP版本进行比较,并向最终用户发送教育和解释性消息。
if (version_compare(PHP_VERSION, '5.3.0') <= 0) {
echo 'You need to run PHP 5.3.0 to use this plugin';
}
答案 3 :(得分:0)
Re 1.)可能有这样的应用程序,但也可能没有。您通常要做的是密切关注您在手册中使用的每个功能,其中说明了需要哪些PHP版本。
Re 2.)如果函数只是PHP 5.3或5.2,您通常会在User Contributed Notes或Stack Overflow中找到替换建议。 (小心你使用的是,UCN中的很多代码都是坏 - 但在这种情况下,通常至少有一条评论这样说。)
重新。 3.)它可能无关紧要,但检查功能是否存在肯定是最安全的方式。