Hướng dẫn php pass object by value - php truyền đối tượng theo giá trị

Tôi muốn thực hiện một chức năng thuần túy trong PHP

Làm cách nào để chuyển một đối tượng theo giá trị chứ không phải bằng tham chiếu?

Nói cách khác, đây là đầu ra dự kiến:

function change[$obj] {
    $obj->set_value[2];
}

$obj = new Object[];
$obj->set_value[1];
change[$obj];
echo $obj->get_value[]; // 1

Hỏi ngày 30 tháng 4 năm 2015 lúc 7:55Apr 30, 2015 at 7:55

1

Đọc ở đây:

//php.net/manual/en/language.oop5.cloning.php

Bạn thực sự không nên vượt qua giá trị, vì điều đó sẽ yêu cầu một bản sao sâu AKA. Bản sao sâu, hoặc một lượng điên được phân bổ cho các tham số ..

Nếu bạn thực sự muốn, câu trả lời là: Bản sao sâu đầu tiên, sau đó chuyển tham chiếu đến bản sao.

Đã trả lời ngày 30 tháng 4 năm 2015 lúc 7:58Apr 30, 2015 at 7:58

HenrikhenrikHenrik

2.13016 huy hiệu bạc28 Huy hiệu đồng16 silver badges28 bronze badges

Một trong những điểm chính của PHP OOP thường được đề cập là "các đối tượng được truyền qua các tài liệu tham khảo theo mặc định". Điều này không hoàn toàn đúng. Phần này điều chỉnh suy nghĩ chung đó bằng một số ví dụ.

Tham chiếu PHP là bí danh, cho phép hai biến khác nhau ghi vào cùng một giá trị. Trong PHP, một biến đối tượng không chứa chính đối tượng là giá trị. Nó chỉ chứa một định danh đối tượng cho phép người truy cập đối tượng tìm đối tượng thực tế. Khi một đối tượng được gửi bằng đối số, được trả về hoặc được gán cho một biến khác, các biến khác nhau không phải là bí danh: chúng giữ một bản sao của định danh, chỉ vào cùng một đối tượng.

Ví dụ #1 Tài liệu tham khảo và đối tượng

Ví dụ trên sẽ xuất ra:

miklcct tại gmail dot com ¶

12 năm trước

Notes on reference:
A reference is not a pointer. However, an object handle IS a pointer. Example:

Bài Viết Liên Quan

Chủ Đề