Sự khác biệt giữa WordPress Random_int () và hàm dựng sẵn PHP Random_int () là gì?


10

Sự khác biệt giữa chức năng xác định WordPress random_int()và chức năng tích hợp PHP là random_int()gì?

Ngoài ra, nếu có sự khác biệt, làm thế nào trình thông dịch PHP hiểu được chức năng nào trong hai hàm tôi đang gọi?

Câu trả lời:


17

WordPress đã cũ. Trong thực tế, nó cũ hơn PHP7, trong đó PHP đã giới thiệu random_int(). WP muốn / cần chức năng này trước đây, vì vậy một phương pháp khác đã được thực hiện.

Trình thông dịch PHP hiểu chức năng nào trong hai chức năng mà tôi đang gọi?

Câu hỏi hay. Thông dịch viên không hiểu điều này. Và do đó, nếu bạn có PHP7 và sẽ xác định hàm này mới, bạn sẽ gặp lỗi. Đây là lý do tại sao. tập tin với định nghĩa hàm chỉ được tải, khi random_int()không có sẵn theo mặc định.

các dòng wp-gồm / Random_compat / Random.php 212-214

if (!function_exists('random_int')) {
    require_once $RandomCompatDIR.'/random_int.php';
}
  • Vì vậy, nếu máy chủ của bạn là PHP7 và của riêng PHP random_int()là có thể gọi được, thì máy chủ này được sử dụng và tệp không bao giờ được bao gồm.

  • Nếu máy chủ của bạn không phải là PHP7 hoặc PHP random_int()không thể gọi được vì bất kỳ lý do gì, tệp sẽ được bao gồm và việc triển khai khác sẽ được đưa ra.

Điều này được thực hiện, vì vậy WordPress có thể chạy trên các hệ thống khác nhau. Những người có PHP5 và những người có PHP7.

Nó khác biệt như thế nào? Tôi thực sự không thể nói với nó. Các tệp WP sử dụng dường như là từ kho lưu trữ nàyrandom_compat , cũng được liên kết từ tài liệu PHP (và được đề xuất nếu bạn không có triển khai riêng của PHP).

Một điểm khác biệt nhanh mà tôi đã thấy: PHP random_int()cố gắng sử dụng getrandom(2)trên các máy Linux, trong khi compat random_int()chỉ sử dụng /dev/urandom.

Khi nghi ngờ, tôi sẽ sử dụng các phiên bản của hệ thống (PHP) thay vì các phiên bản được giới thiệu bởi phần mềm (WP). Nhưng đó chỉ là ý kiến ​​của tôi.


"Khi nghi ngờ, tôi sẽ sử dụng các phiên bản của hệ thống" Có vẻ như bạn giải thích khi bắt đầu câu trả lời mà bạn không thể chọn. Hoặc là nó đã có trong đó (PHP> = 7) và WP sẽ không tải nó, hoặc nó không ở đó nên WP sẽ tải nó. Có một nền tảng trung gian nơi bạn tự chọn (vô hiệu hóa chức năng của WP, tôi đoán vậy)? Chắc chắn, bạn có thể thực hiện bất kỳ sửa đổi nào bạn muốn. Nhưng nó có đáng để đi phi tiêu chuẩn trong những gì có vẻ như là một chức năng tương đối cốt lõi?
Cột

@Mast Luôn có một cách. Bạn có thể tải kho lưu trữ đó và chỉ cần thay đổi tên hàm ( random_int_custom()ví dụ) để có thể sử dụng được. Nhận xét cuối cùng có ý nghĩa như là: nó có ý nghĩa rằng nó hoạt động theo cách này (thay vì sử dụng các chức năng hệ thống so với của bạn) và tôi không khuyên bạn nên đi xa hơn để phá vỡ điều này
kero

1
Bạn không khuyên bạn nên đi những dặm thêm, ok. Đó là tất cả những gì tôi muốn biết :-)
Mast
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.