WordPressのrandom_int()とPHPの組み込み関数random_int()の違いは何ですか?


10

WordPress定義関数random_int()とPHP組み込み関数の違いは何random_int()ですか?

また、違いがある場合、PHPインタープリターは、呼び出している2つの関数のどちらをどのように理解しますか?

回答:


17

WordPressは古いです。実際、PHPが導入されたPHP7よりも古いものですrandom_int()。WPは以前にこの機能を必要としていたため、別の方法が実装されました。

PHPインタープリターは、呼び出している2つの関数のどちらをどのように理解しますか?

良い質問。通訳はこれを理解していません。したがって、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の独自の実装がない場合は推奨されます)。

私がすでに見た1つの簡単な違い:PHP はLinuxマシンでrandom_int()使用しようとしますgetrandom(2)が、互換モジュールはrandom_int()のみを使用し/dev/urandomます。

疑問がある場合は、ソフトウェア(WP)で導入されたバージョンではなく、システムのバージョン(PHP)を使用します。しかし、それは私の意見にすぎません。


「疑問がある場合は、システムのバージョンを使用します」回答の最初に、選択できないことを説明しているようです。それはすでにそこにあり(PHP> = 7)、WPはそれをロードしないか、そこにないのでWPがそれをロードします。あなたが自分自身を選ぶ中間の地面はありますか(私はおそらくWPの機能を明示的に無効にします)?もちろん、必要な変更を加えることができます。しかし、比較的コアな機能のように見えるものを非標準化することは価値がありますか?
マスト

@マスト常に方法があります。そのリポジトリをロードし、関数名(random_int_custom()たとえば)を変更して、使用できるようにすることができます。それは(むしろあなた自身よりも、システムの機能を使用して)それがこのように動作することを理にかなって、私はこれを回避するために余分なマイルを行くお勧めしません:最後のコメントは、むしろとして意図された
ケロ

1
さて、追加のマイルに行くことはお勧めしません。それが私が知りたかったすべてです:-)
マスト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.