Was ist der Unterschied zwischen der von WordPress definierten Funktion random_int()
und der in PHP integrierten Funktion random_int()
?
Wenn es einen Unterschied gibt, wie versteht der PHP-Interpreter, welche der beiden Funktionen ich aufrufe?
Was ist der Unterschied zwischen der von WordPress definierten Funktion random_int()
und der in PHP integrierten Funktion random_int()
?
Wenn es einen Unterschied gibt, wie versteht der PHP-Interpreter, welche der beiden Funktionen ich aufrufe?
Antworten:
WordPress ist alt. Tatsächlich ist es älter als PHP7, in das PHP eingeführt wurde random_int()
. WP wollte / brauchte diese Funktionalität schon einmal, daher wurde eine andere Methode implementiert.
Wie versteht der PHP-Interpreter, welche der beiden Funktionen ich aufrufe?
Gute Frage. Der Dolmetscher versteht das nicht. Wenn Sie also PHP7 hätten und diese Funktion neu definieren würden, würden Sie eine Fehlermeldung erhalten. Deshalb. Die Datei mit der Funktionsdefinition wird nur geladen, wenn random_int()
sie standardmäßig nicht verfügbar ist.
wp-include / random_compat / random.php Zeilen 212-214 sind
if (!function_exists('random_int')) {
require_once $RandomCompatDIR.'/random_int.php';
}
Wenn Ihr Server also PHP7 ist und der eigene von PHP random_int()
aufrufbar ist, wird dieser verwendet und die Datei wird nie aufgenommen.
Wenn Ihr Server nicht PHP7 ist oder PHPs eigener random_int()
aus irgendeinem Grund nicht aufrufbar ist, wird die Datei eingeschlossen und eine weitere Implementierung angegeben.
Dies geschieht, damit WordPress auf verschiedenen Systemen ausgeführt werden kann. Die mit PHP5 und die mit PHP7.
Wo ist der Unterschied? Ich kann nicht wirklich mit ihm sprechen. Die von WP verwendeten Dateien scheinen aus diesem random_compat
Repository zu stammen , das auch aus dem PHP-Dokument verknüpft ist (und empfohlen wird, wenn Sie keine PHP-eigene Implementierung zur Verfügung haben).
Ein kurzer Unterschied, den ich bereits gesehen habe: PHPs random_int()
versuchen, getrandom(2)
auf Linux-Computern zu verwenden, während der Kompat random_int()
nur verwendet wird /dev/urandom
.
Im Zweifelsfall würde ich die Versionen des Systems (PHP) anstelle der von der Software (WP) eingeführten verwenden. Das ist aber nur meine Meinung.
random_int_custom()
z. B.) ändern, damit es verwendet werden kann. Der letzte Kommentar war eher als gedacht: Es macht Sinn, dass es so funktioniert (eher mit Systemfunktionen als mit Ihren eigenen), und ich würde nicht empfehlen, die zusätzlichen Meilen zu gehen, um dies zu umgehen