Qual é a diferença entre o WordPress random_int () e a função interna PHP random_int ()?

8

Qual é a diferença entre a função definida pelo WordPress random_int() e a função interna do PHP random_int() ?

Além disso, se houver uma diferença, como o interpretador PHP entende quais das duas funções estou chamando?

    
por Juri Rudi 28.08.2018 / 14:22

1 resposta

14

WordPress é antigo. Na verdade, ele é mais antigo que o PHP7, no qual o PHP introduziu random_int() . WP queria / precisava dessa funcionalidade antes, então outro método foi implementado.

  

como o interpretador PHP entende qual das duas funções eu estou chamando?

Boa pergunta. O intérprete não entende isso. E, portanto, se você tivesse o PHP7 e definisse essa função como nova, você receberia um erro. Isso é por que. o arquivo com a definição da função é carregado apenas quando random_int() não está disponível por padrão.

wp-includes / random_compat / random.php linhas 212 -214 são

if (!function_exists('random_int')) {
    require_once $RandomCompatDIR.'/random_int.php';
}
  • Portanto, se o seu servidor for PHP7 e o random_int() do próprio PHP for chamado, este será usado e o arquivo nunca será incluído.

  • Se o seu servidor não é PHP7 ou o próprio random_int() do PHP não é chamado por nenhum motivo, o arquivo é incluído e outra implementação será fornecida.

Isso é feito, então o WordPress pode rodar em diferentes sistemas. Aqueles com PHP5 e aqueles com PHP7.

Como isso é diferente? Eu não posso falar com isso. Os arquivos que o WP usa parecem ser de este random_compat repository , que também está vinculado a partir do doc PHP (e sugerido se você não usa não tem a implementação do próprio PHP disponível).

Uma rápida diferença que já vi: o random_int() do PHP tenta usar getrandom(2) em máquinas Linux, enquanto o compat random_int() usa apenas /dev/urandom .

Em caso de dúvida, usaria as versões do sistema (PHP) em vez das introduzidas pelo software (WP). Mas essa é apenas a minha opinião.

    
por kero 28.08.2018 / 14:36

Tags