Apa perbedaan antara WordPress random_int () dan fungsi PHP built-in random_int ()?


10

Apa perbedaan antara fungsi yang ditentukan WordPress random_int()dan fungsi bawaan PHPrandom_int() ?

Juga, jika ada perbedaan, bagaimana interpreter PHP memahami mana dari dua fungsi yang saya panggil?

Jawaban:


17

WordPress sudah tua. Bahkan, ini lebih tua dari PHP7, di mana PHP diperkenalkan random_int(). WP ingin / membutuhkan fungsi ini sebelumnya, jadi metode lain diterapkan.

bagaimana interpreter PHP memahami fungsi mana yang saya panggil?

Pertanyaan bagus. Penerjemah tidak memahami hal ini. Dan karenanya, jika Anda memiliki PHP7 dan akan mendefinisikan fungsi ini baru, Anda akan mendapatkan kesalahan. Ini sebabnya. file dengan definisi fungsi hanya dimuat, ketika random_int()tidak tersedia secara default.

wp-include / random_compat / random.php baris 212-214 adalah

if (!function_exists('random_int')) {
    require_once $RandomCompatDIR.'/random_int.php';
}
  • Jadi jika server Anda adalah PHP7 dan PHP sendiri random_int()bisa dipanggil, yang ini digunakan dan file tidak pernah disertakan.

  • Jika server Anda bukan PHP7 atau PHP sendiri random_int()tidak dapat dipanggil karena alasan apa pun, file tersebut disertakan dan implementasi lain akan diberikan.

Ini dilakukan, agar WordPress dapat berjalan pada sistem yang berbeda. Mereka yang menggunakan PHP5 dan mereka yang menggunakan PHP7.

Apa bedanya? Saya tidak bisa berbicara dengannya. File-file yang digunakan WP tampaknya berasal dari repositori inirandom_compat , yang juga ditautkan dari doc PHP (dan disarankan jika Anda tidak memiliki implementasi PHP sendiri tersedia).

Satu perbedaan cepat yang sudah saya lihat: PHP random_int()mencoba untuk digunakan getrandom(2)pada mesin Linux, sedangkan compat random_int()hanya menggunakan /dev/urandom.

Jika ragu, saya akan menggunakan versi sistem (PHP) alih-alih yang diperkenalkan oleh perangkat lunak (WP). Tapi itu hanya pendapat saya.


"Ketika ragu, saya akan menggunakan versi sistem" Sepertinya Anda menjelaskan di awal jawaban Anda bahwa Anda tidak dapat memilih. Entah itu sudah ada di sana (PHP> = 7) dan WP tidak akan memuatnya, atau tidak ada di sana sehingga WP akan memuatnya. Apakah ada jalan tengah di mana Anda memilih sendiri (menonaktifkan fungsi WP secara eksplisit, saya kira)? Tentu, Anda dapat melakukan modifikasi apa pun yang Anda inginkan. Tetapi apakah itu layak untuk pergi non-standar dalam apa yang tampaknya seperti fungsi inti?
Tiang

@Mast Selalu ada jalan. Anda bisa memuat repositori itu dan cukup mengubah nama fungsi ( random_int_custom()misalnya) agar dapat digunakan. Komentar terakhir agak dimaksudkan sebagai: masuk akal bahwa ia bekerja dengan cara ini (daripada menggunakan fungsi sistem daripada milik Anda), dan saya tidak akan merekomendasikan menempuh jarak ekstra untuk mengelaknya
kero

1
Anda tidak merekomendasikan menempuh jarak ekstra, ok. Hanya itu yang ingin saya ketahui :-)
Tiang
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.