Quelle est la différence entre la fonction définie par WordPress random_int()
et la fonction intégrée PHP random_int()
?
De plus, s'il y a une différence, comment l'interpréteur PHP comprend-il laquelle des deux fonctions j'appelle?
Quelle est la différence entre la fonction définie par WordPress random_int()
et la fonction intégrée PHP random_int()
?
De plus, s'il y a une différence, comment l'interpréteur PHP comprend-il laquelle des deux fonctions j'appelle?
Réponses:
WordPress est vieux. En fait, il est plus ancien que PHP7, dans lequel PHP a été introduit random_int()
. WP voulait / avait besoin de cette fonctionnalité avant, donc une autre méthode a été implémentée.
comment l'interpréteur PHP comprend laquelle des deux fonctions que j'appelle?
Bonne question. L'interprète ne comprend pas cela. Et donc, si vous aviez PHP7 et définiriez cette fonction nouvelle, vous obtiendriez une erreur. C'est pourquoi. le fichier avec la définition de fonction n'est chargé que lorsqu'il random_int()
n'est pas disponible par défaut.
wp-includes / random_compat / random.php les lignes 212-214 sont
if (!function_exists('random_int')) {
require_once $RandomCompatDIR.'/random_int.php';
}
Donc, si votre serveur est PHP7 et que le propre de PHP random_int()
est appelable, celui-ci est utilisé et le fichier n'est jamais inclus.
Si votre serveur n'est pas PHP7 ou que le PHP random_int()
n'est pas appelable pour quelque raison que ce soit, le fichier est inclus et une autre implémentation sera donnée.
Cela est fait, donc WordPress peut 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 que WP utilise semblent provenir de ce random_compat
référentiel , qui est également lié à partir du document PHP (et suggéré si vous n'avez pas la propre implémentation de PHP disponible).
Une différence rapide que j'ai déjà vue: PHP random_int()
essaie d'utiliser getrandom(2)
sur les machines Linux, tandis que le 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.
random_int_custom()
par exemple) pour qu'il soit utilisable. Le dernier commentaire était plutôt conçu comme: il est logique que cela fonctionne de cette façon (plutôt en utilisant les fonctions système que les vôtres), et je ne recommanderais pas d'aller plus loin pour contourner cela