¿Cuál es la diferencia entre WordPress random_int () y la función incorporada de PHP random_int ()?

8

¿Cuál es la diferencia entre la función definida por 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?

    
pregunta Juri Rudi 28.08.2018 - 14:22

1 respuesta

14

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.

    
respondido por el kero 28.08.2018 - 14:36

Lea otras preguntas en las etiquetas