PHP đã thực hiện một điều sao chép khi ghi mà nó không tạo ra giá trị mới cho đến khi bạn thay đổi thứ gì đó, do đó không có nhiều bộ nhớ được lưu bằng cách sử dụng các tham chiếu. Làm như vậy thậm chí có thể gây rối với một số thứ mà PHP thực hiện trong nội bộ để giảm mức sử dụng bộ nhớ, khiến mọi thứ trở nên tồi tệ hơn.
Thêm vào đó là thực tế rằng các tài liệu tham khảo làm cho mọi thứ nói chung hơi kỳ diệu. Mặc định, và do đó, hầu hết mọi người mong đợi, là giá trị truyền qua; Khi tôi chuyển $i
đến một chức năng, nó làm phức tạp mọi thứ rất nhiều để quan tâm liệu chức năng đó có thay đổi $i
hoàn toàn sang một thứ khác hoàn toàn không, và do đó tạo ra các bản sao phòng thủ chỉ trong trường hợp. (Nó có thể sửa đổi $i
nếu giá trị là một đối tượng, nhưng theo tôi thì không nên.)
Về cơ bản, tôi chỉ muốn tìm pass-by-tham khảo hữu ích cho "out" các thông số, có nghĩa là các biến i mong đợi để có được trở lại từ chức năng chứ không phải vượt qua trong, a la preg_match
's &$matches
. Ngay cả đối với các chức năng sửa đổi rõ ràng đối tượng được truyền vào, như sort
hoặc array_pop
, cảm thấy hơi khó chịu ... nhưng đó là những gì chúng ta đang mắc kẹt.