web-dev-qa-db-fra.com

Quelle est la différence entre WordPress random_int () et PHP fonction intégrée random_int ()?

Quelle est la différence entre la fonction définie par WordPress random_int() et PHP la fonction intégrée random_int() ?

De plus, s'il y a une différence, comment l'interprète PHP comprend-il la fonction que j'appelle?

8
Juri Rudi

WordPress est vieux. En fait, il est plus ancien que PHP7, dans lequel PHP a introduit random_int() . WP voulait/avait besoin de cette fonctionnalité avant, donc une autre méthode a été implémentée.

comment l'interprète PHP comprend-t-il laquelle des deux fonctions que j'appelle?

Bonne question. L'interprète ne comprend pas cela. Et par conséquent, si vous aviez PHP7 et que vous définiriez cette fonction comme nouvelle, vous obtiendrez une erreur. C'est pourquoi. le fichier avec la définition de la fonction est uniquement chargé, lorsque random_int() n'est pas disponible par défaut.

wp-includes/random_compat/random.php lignes 212-214 sont

if (!function_exists('random_int')) {
    require_once $RandomCompatDIR.'/random_int.php';
}
  • Donc si votre serveur est PHP7 et que la random_int() propre à PHP est appelable, celui-ci est utilisé et le fichier n’est jamais inclus.

  • Si votre serveur n'est pas PHP7 ou si la random_int() de PHP n'est pas appelable pour une raison quelconque, le fichier est inclus et une autre implémentation sera donnée.

Ceci est fait pour que WordPress puisse fonctionner sur différents systèmes. Ceux avec PHP5 et ceux avec PHP7.

En quoi est-ce différent? Je ne peux pas vraiment en parler. Les fichiers utilisés par WP semblent provenir de de ce référentiel random_compat , également lié à la doc PHP (et suggéré si vous ne disposez pas de la propre implémentation de PHP).

Une différence rapide que j'ai déjà vue: la random_int() de PHP essaie d'utiliser getrandom(2) sur les machines Linux, alors que la compat random_int() n'utilise que /dev/urandom.

En cas de doute, j'utiliserais les versions du système (PHP) au lieu de celles introduites par le logiciel (WP). Mais ce n'est que mon opinion.

14
kero