WordPress random_int()和PHP内置函数random_int()有什么区别?


Answers:


17

WordPress是旧的。实际上,它比PHP所引​​入的PHP7更旧random_int()。WP之前曾希望/需要此功能,因此实现了另一种方法。

PHP解释器如何理解我正在调用的两个函数中的哪个?

好问题。口译员不理解这一点。因此,如果您拥有PHP7并定义了这个新函数,则会收到错误消息。这就是为什么。具有功能定义的文件仅在random_int()默认情况下不可用时才加载。

wp-includes / random_compat / random.php第212-214行

if (!function_exists('random_int')) {
    require_once $RandomCompatDIR.'/random_int.php';
}
  • 因此,如果您的服务器是PHP7,而PHP自己的服务器是random_int()可调用的,则使用该服务器,并且永远不会包含该文件。

  • 如果您的服务器不是PHP7或random_int()由于任何原因无法调用PHP自己的服务器,则会包含该文件并提供另一个实现。

这样就完成了,因此WordPress可以在不同的系统上运行。那些使用PHP5和那些使用PHP7。

有什么不同?我真的不能说出来。WP使用的文件似乎来自random_compat存储库存储库也与PHP文档链接(如果您没有PHP自己的实现,则建议使用)。

我已经看到一个快速的区别:PHP random_int()尝试getrandom(2)在Linux计算机上使用,而compat random_int()仅使用/dev/urandom

如有疑问,我将使用系统的版本(PHP)而不是软件(WP)引入的版本。但这只是我的意见。


“如果有疑问,我会使用系统的版本”,这听起来像是您在回答开始时就解释了无法选择的内容。要么它已经在其中(PHP> = 7)并且WP无法加载它,或者它不在那里,所以WP将会加载它。您是否有中间立场(我认为是显式禁用WP的功能)?当然,您可以进行所需的任何修改。但是,在看起来相对核心的功能上非标准地值得吗?
桅杆

@桅杆总有办法。您可以加载该存储库,然后简单地更改函数名称(random_int_custom()例如)以使其可用。最后一条评论的意思是:它是这样工作的(而不是使用系统功能而不是您自己的功能),并且我不建议您花更多的
精力

1
您不建议多走几步,好吧。那就是我想要知道的全部:-)
桅杆'18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.