WordPress es viejo. De hecho, es más antiguo que PHP7, en el que PHP introdujo random_int()
. WP quería / necesitaba esta funcionalidad antes, por lo que se implementó otro método.
¿Cómo entiende el intérprete de PHP a cuál de las dos funciones estoy llamando?
Buena pregunta. El intérprete no entiende esto. Y por lo tanto, si tuviera PHP7 y definiera esta función como nueva, obtendría un error. Esta es la razón por. el archivo con la definición de la función solo se carga, cuando random_int()
no está disponible de forma predeterminada.
wp-includes / random_compat / random.php líneas 212 -214 son
if (!function_exists('random_int')) {
require_once $RandomCompatDIR.'/random_int.php';
}
-
Entonces, si su servidor es PHP7 y el propio random_int()
de PHP es invocable, este se usa y el archivo nunca se incluye.
-
Si su servidor no es PHP7 o el propio random_int()
de PHP no se puede llamar por ningún motivo, el archivo está incluido y se dará otra implementación.
Esto se hace, por lo que WordPress puede ejecutarse en diferentes sistemas. Aquellos con PHP5 y aquellos con PHP7.
¿En qué se diferencia? Realmente no puedo hablar de ello. Los archivos que usa WP parecen ser de este random_compat
repositorio , que también está vinculado desde el documento PHP (y sugerido si no No tengo disponible la propia implementación de PHP.
Una rápida diferencia que ya vi: random_int()
de PHP intenta usar getrandom(2)
en las máquinas Linux, mientras que compat random_int()
solo usa /dev/urandom
.
En caso de duda, utilizaría las versiones del sistema (PHP) en lugar de las introducidas por el software (WP). Pero esa es solo mi opinión.