¿Cuál es la diferencia entre la función definida de WordPress random_int()
y la función integrada de PHP random_int()
?
Además, si hay una diferencia, ¿cómo entiende el intérprete de PHP a cuál de las dos funciones estoy llamando?
¿Cuál es la diferencia entre la función definida de WordPress random_int()
y la función integrada de PHP random_int()
?
Además, si hay una diferencia, ¿cómo entiende el intérprete de PHP a cuál de las dos funciones estoy llamando?
Respuestas:
WordPress es viejo. De hecho, es más antiguo que PHP7, en el que se introdujo PHP random_int()
. WP quería / necesitaba esta funcionalidad antes, por lo que se implementó otro método.
¿Cómo entiende el intérprete 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 función solo se carga cuando random_int()
no está disponible de forma predeterminada.
wp-includes / random_compat / random.php las 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 PHP random_int()
es invocable, este se usa y el archivo nunca se incluye.
Si su servidor no es PHP7 o el propio PHP random_int()
no es invocable por alguna razón, el archivo está incluido y se le dará otra implementación.
Esto se hace, por lo que WordPress puede ejecutarse en diferentes sistemas. Aquellos con PHP5 y aquellos con PHP7.
¿Cómo es diferente? Realmente no puedo hablar con eso. Los archivos que WP usa parecen ser de este random_compat
repositorio , que también está vinculado desde el documento de PHP (y sugerido si no tiene disponible la implementación de PHP).
Una diferencia rápida que ya vi: PHP random_int()
intenta usar getrandom(2)
en máquinas Linux, mientras que la compatibilidad random_int()
solo usa /dev/urandom
.
En caso de duda, usaría las versiones del sistema (PHP) en lugar de las introducidas por el software (WP). Pero esa es solo mi opinión.
random_int_custom()
por ejemplo) para que sea utilizable. El último comentario fue más bien como: tiene sentido que funcione de esta manera (en lugar de utilizar funciones del sistema que las suyas propias), y no recomendaría hacer un esfuerzo adicional para evitar esto