WordPress定義関数random_int()
とPHP組み込み関数の違いは何random_int()
ですか?
また、違いがある場合、PHPインタープリターは、呼び出している2つの関数のどちらをどのように理解しますか?
WordPress定義関数random_int()
とPHP組み込み関数の違いは何random_int()
ですか?
また、違いがある場合、PHPインタープリターは、呼び出している2つの関数のどちらをどのように理解しますか?
回答:
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)を使用します。しかし、それは私の意見にすぎません。
random_int_custom()
たとえば)を変更して、使用できるようにすることができます。それは(むしろあなた自身よりも、システムの機能を使用して)それがこのように動作することを理にかなって、私はこれを回避するために余分なマイルを行くお勧めしません:最後のコメントは、むしろとして意図された