Qual é a diferença entre a função definida pelo WordPress random_int()
e a função integrada do PHP random_int()
?
Além disso, se houver uma diferença, como o interpretador PHP entende qual das duas funções que estou chamando?
Qual é a diferença entre a função definida pelo WordPress random_int()
e a função integrada do PHP random_int()
?
Além disso, se houver uma diferença, como o interpretador PHP entende qual das duas funções que estou chamando?
Respostas:
WordPress é antigo. De fato, é mais antigo que o PHP7, no qual o PHP foi introduzido random_int()
. O WP queria / precisava dessa funcionalidade antes, então outro método foi implementado.
como o interpretador PHP entende qual das duas funções que estou chamando?
Boa pergunta. O intérprete não entende isso. E, portanto, se você tivesse o PHP7 e definiria essa função como nova, obteria 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.
As linhas wp-includes / random_compat / random.php 212-214 são
if (!function_exists('random_int')) {
require_once $RandomCompatDIR.'/random_int.php';
}
Portanto, se o seu servidor for PHP7 e o próprio PHP puder ser chamado random_int()
, este será usado e o arquivo nunca será incluído.
Se o seu servidor não for PHP7 ou o próprio PHP não puder ser chamado random_int()
por qualquer motivo, o arquivo será incluído e outra implementação será fornecida.
Isso é feito, para que o WordPress possa ser executado em diferentes sistemas. Aqueles com PHP5 e aqueles com PHP7.
Como é diferente? Eu realmente não posso falar com isso. Os arquivos que o WP usa parecem pertencer a este random_compat
repositório , que também está vinculado a partir do documento PHP (e sugerido se você não tiver a própria implementação do PHP disponível).
Uma rápida diferença que eu já vi: o PHP random_int()
tenta usar getrandom(2)
em máquinas Linux, enquanto o compat random_int()
apenas /dev/urandom
.
Na dúvida, eu usaria as versões do sistema (PHP) em vez daquelas introduzidas pelo software (WP). Mas essa é apenas a minha opinião.
random_int_custom()
por exemplo) para que sejam utilizáveis. O último comentário foi um pouco entende como uma: faz sentido que ele funciona desta forma (em vez utilizando as funções do sistema do que o seu próprio), e eu não recomendo ir a milhas extras para contornar este