Tôi muốn kích hoạt một hàm dựa trên biến.PHP: Biến trong tên hàm
function sound_dog() { return 'woof'; } function sound_cow() { return 'moo'; } $animal = 'cow'; print sound_{$animal}(); *
Dòng * là dòng không chính xác.
Tôi đã thực hiện việc này trước đây, nhưng tôi không thể tìm thấy. Tôi biết về các vấn đề bảo mật tiềm ẩn, v.v.
Bất kỳ ai? Cảm ơn nhiều.
Cảm ơn một nhóm. Bạn đã cứu tôi rất nhiều kích thích! – LibraryThingTim
Đây là một phương pháp hấp dẫn. Nó có phải là một nguy cơ bảo mật để cung cấp cho một truy cập trực tiếp biến REQUEST này? Nếu vậy, các biện pháp có thể được thực hiện để ngăn chặn nó? Có lẽ một danh sách các chức năng mà bạn chỉ muốn cung cấp quyền truy cập vào, và một kiểm tra chống lại danh sách này khi các REQUEST var của tên này là gặp phải? –
Bạn không được cấp quyền truy cập trực tiếp REQUEST (đọc: LUÔN vệ sinh đầu vào của người dùng). Một bảng điều phối dọc theo dòng câu trả lời của Greg Hewgill có lẽ là giải pháp tốt nhất.Bạn có thể kiểm tra tính hợp lệ của đầu vào YÊU CẦU thông qua array_key_exists(), chỉ cần chắc chắn rằng bạn trích dẫn các giá trị (sound_dog -> 'sound_dog') hoặc nó sẽ ném một thông báo. – scribble