Tôi đã thấy những người (thường viết mã tốt) trực tiếp thay đổi $_POST
mảng bằng mã như thế này:
// Add some value that wasn't actually posted
$_POST['last_activity'] = time();
// Alter an existing post value
$_POST['name'] = trim($_POST['name']);
// Our pretend function
// Pass the entire $_POST array as data to work with in the function
// The function update_record() will read only the values we actually need
update_record($_POST);
// ...That sure was easier than creating a new array
// with only the $_POST values we actually need.
Điều này có nghĩa là update_record()
không nên truy cập trực tiếp $ _POST, vì vậy chúng ta có thể chuyển các mảng dữ liệu khác cho nó, nhưng chắc chắn đây là sự lười biếng, thiết kế tồi hoặc có thể chỉ là sai? Tuy nhiên, chúng tôi vẫn đang truyền một mảng hợp lệ cho update_record()
, vậy tại sao tạo một mảng mới?
Đây không phải là điểm của câu hỏi, chỉ là một ví dụ về việc sử dụng. Tuy nhiên, tôi đã nghe nhiều người nói rằng điều này không nên được thực hiện với $_REQUEST
dữ liệu và đó là thực tế tồi. Nhưng tại sao? Trông đủ vô hại.
Ví dụ:
Đặt
$_GET
giá trị mặc định (hoặc bài đăng) không thực sự tồn tạiThêm
$_POST
các giá trị không thực sự được đăng sau khi gửi biểu mẫuVệ sinh trực tiếp hoặc lọc các
$_GET
giá trị mảng hoặc khóa từ rất sớm trong tập lệnh (vệ sinh dự phòng ... tại sao không?)Đặt
$_POST
giá trị theo cách thủ công trước khi gửi biểu mẫu để nhập dữ liệu đầu vào với giá trị mặc định (khi đầu vào đọc$_POST
giá trị mặc định; tôi đã thực hiện việc này)Tạo nên
$_SERVER
giá trị của riêng bạn ? Chắc chắn, tại sao không?Còn những người khác, thích
$_COOKIE
và$_SESSION
thì sao? Tất nhiên chúng ta phải sửa đổi trực tiếp phải không? Vậy thì tại sao không phải là những người khác?
Nên chỉ đạo sửa đổi superglobals không bao giờ được thực hiện, hoặc là nó OK để làm trong một số trường hợp?