Qual è la differenza tra la funzione definita di WordPress random_int()
e la funzione integrata di PHP random_int()
?
Inoltre, se c'è una differenza, come fa l'interprete PHP a capire quale delle due funzioni sto chiamando?
Qual è la differenza tra la funzione definita di WordPress random_int()
e la funzione integrata di PHP random_int()
?
Inoltre, se c'è una differenza, come fa l'interprete PHP a capire quale delle due funzioni sto chiamando?
Risposte:
WordPress è vecchio. In effetti, è più vecchio di PHP7, in cui è stato introdotto PHP random_int()
. WP desiderava / aveva bisogno di questa funzionalità prima, quindi è stato implementato un altro metodo.
come fa l'interprete PHP a capire quale delle due funzioni sto chiamando?
Buona domanda. L'interprete non lo capisce. E quindi, se avessi PHP7 e definissi questa funzione nuova, otterrai un errore. Ecco perché. il file con la definizione della funzione viene caricato solo, quando random_int()
non è disponibile per impostazione predefinita.
wp-include / random_compat / random.php linee 212-214 sono
if (!function_exists('random_int')) {
require_once $RandomCompatDIR.'/random_int.php';
}
Quindi, se il tuo server è PHP7 e quello di PHP random_int()
è richiamabile, questo viene utilizzato e il file non viene mai incluso.
Se il tuo server non è PHP7 o PHP random_int()
non è richiamabile per nessun motivo, il file viene incluso e verrà fornita un'altra implementazione.
Questo è fatto, quindi WordPress può essere eseguito su diversi sistemi. Quelli con PHP5 e quelli con PHP7.
Come è diverso? Non ci posso proprio parlare. I file utilizzati da WP sembrano provenire da questo random_compat
repository , anch'esso collegato al documento PHP (e suggerito se non si dispone dell'implementazione propria di PHP disponibile).
Una rapida differenza che ho già visto: PHP random_int()
cerca di usare getrandom(2)
su macchine Linux, mentre la compat random_int()
usa solo /dev/urandom
.
In caso di dubbio, utilizzerei le versioni del sistema (PHP) anziché quelle introdotte dal software (WP). Ma questa è solo la mia opinione.
random_int_custom()
ad es.) Affinché siano utilizzabili. L'ultimo commento era piuttosto inteso come: ha senso che funzioni in questo modo (piuttosto usando le funzioni di sistema rispetto alle tue), e non consiglierei di fare le miglia extra per aggirare questo