PHP sudah melakukan copy-on-write di mana hal itu tidak menciptakan nilai baru sampai Anda mengubah sesuatu, jadi tidak ada banyak memori yang disimpan dengan menggunakan referensi. Melakukannya bahkan dapat mengacaukan beberapa hal yang dilakukan PHP secara internal untuk mengurangi penggunaan memori, membuat segalanya menjadi lebih buruk.
Tambahkan ke fakta bahwa referensi membuat hal-hal agak terlalu ajaib secara umum. Default, dan dengan demikian apa yang kebanyakan orang harapkan, adalah nilai per nilai; ketika saya beralih $i
ke suatu fungsi, hal itu sangat rumit untuk harus peduli apakah fungsi itu secara misterius berubah $i
menjadi sesuatu yang lain, dan dengan demikian membuat salinan defensif untuk berjaga-jaga. (Ini sudah dapat memodifikasi $i
jika nilainya adalah objek, tetapi menurut saya tidak seharusnya.)
Pada dasarnya, saya hanya akan menemukan pass-by-referensi yang berguna untuk "keluar" parameter, yang berarti variabel saya berharap untuk mendapatkan kembali dari fungsi daripada lulus dalam, ala preg_match
's &$matches
. Bahkan untuk fungsi yang secara jelas memodifikasi objek yang dilewatkan, seperti sort
atau array_pop
, yang terasa agak menjengkelkan ... tapi itulah yang kita terjebak.