trực tiếp, nó có thể là không thể - tuy nhiên, nếu bạn có kiểm soát cả trong chức năng bạn đang thực hiện và của mã mà cuộc gọi nó - sau đó là một công việc xung quanh mà bạn có thể tìm thích hợp.
Bạn có đồng ý nhúng biến được đề cập vào một đối tượng không? Mã sẽ trông (phần nào) như thế này nếu bạn đã làm như vậy.
function toBeCalled($par_ref) {
$parameter = $par_ref->parameter;
//...Do Something...
$par_ref->parameter = $parameter;
}
$changingVar = 'passThis';
$parembed = new stdClass; // Creates an empty object
$parembed->parameter = array($changingVar);
call_user_func_array('toBeCalled', $parembed);
Bạn thấy đấy, một biến đối tượng trong PHP chỉ là một tài liệu tham khảo đến nội dung của đối tượng --- vì vậy nếu bạn vượt qua một đối tượng để một chức năng, bất kỳ thay đổi chức năng làm cho nội dung của đối tượng sẽ được phản ánh trong chức năng gọi điện thoại cũng có quyền truy cập.
Chỉ cần chắc chắn rằng chức năng gọi điện thoại không bao giờ thực hiện một bài tập cho các đối tượng biến tự - hoặc sẽ gây ra các chức năng để, về cơ bản, mất tài liệu tham khảo. Bất kỳ câu lệnh gán nào mà hàm tạo ra phải là đúng đến nội dung của đối tượng.
Nguồn
2015-08-12 18:21:04
Giải pháp này ném cảnh báo với NGHIÊM NGẶT kích hoạt ... "được tán thành: Gọi thời gian pass-by-reference đã bị phản đối" – Archenoth
Tôi không biết về phiên bản mới hơn của php nhưng trên máy chủ 5.3.3 của tôi khi tôi sử dụng 'call_user_func (" function ", & $ parameter)' Tôi nhận được thông điệp không được chấp nhận. Khi tôi chuyển sang 'call_user_func_array' nó đã sửa lỗi. Vì vậy, sau đó tôi kiểm tra với STRICT kích hoạt và vẫn không nhận được tin nhắn vì vậy tôi nghĩ rằng đây là một cách chấp nhận được để làm điều đó. – Lightbulb1