В чем разница между определенной функцией WordPress random_int()
и встроенной функцией PHP random_int()
?
Кроме того, если есть разница, как интерпретатор PHP понимает, какую из двух функций я вызываю?
В чем разница между определенной функцией WordPress random_int()
и встроенной функцией PHP random_int()
?
Кроме того, если есть разница, как интерпретатор PHP понимает, какую из двух функций я вызываю?
Ответы:
WordPress старый. На самом деле, он старше, чем PHP7, в котором представлен PHP random_int()
. WP хотел / нуждался в этой функциональности раньше, поэтому был реализован другой метод.
как интерпретатор PHP понимает, какую из двух функций я вызываю?
Хороший вопрос. Переводчик не понимает этого. И, следовательно, если бы у вас был PHP7 и вы бы определили эту функцию как новую, вы получите ошибку. Вот почему. файл с определением функции загружается только тогда, когда random_int()
по умолчанию он недоступен.
wp-includes / random_compat / random.php строки 212-214 являются
if (!function_exists('random_int')) {
require_once $RandomCompatDIR.'/random_int.php';
}
Так что, если ваш сервер PHP7, а собственный PHP может быть вызван random_int()
, этот сервер используется, и файл никогда не включается.
Если ваш сервер не является PHP7 или собственный PHP не может быть вызван random_int()
по каким-либо причинам, файл включается и будет предоставлена другая реализация.
Это сделано, поэтому WordPress может работать на разных системах. Те с PHP5 и те, с PHP7.
Чем он отличается? Я не могу говорить с этим. Файлы WP используются из этого random_compat
репозитория , который также связан с документом PHP (и рекомендуется, если у вас нет собственной реализации PHP).
Одно быстрое отличие, которое я уже видел: PHP random_int()
пытается использовать getrandom(2)
на машинах Linux, в то время как compat random_int()
использует только /dev/urandom
.
В случае сомнений я бы использовал версии системы (PHP) вместо версий программного обеспечения (WP). Но это только мое мнение.
random_int_custom()
например), чтобы он был пригоден для использования. Последний комментарий был скорее задуман как: имеет смысл, что он работает таким образом (скорее используя системные функции, чем ваши собственные), и я бы не рекомендовал использовать дополнительные мили, чтобы обойти это