⊗ppOpAdPBR 23 of 107 menu

Truyền đối tượng bằng tham chiếu trong OOP PHP

Giả sử chúng ta có lớp User như sau:

<?php class User { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Giả sử chúng ta tạo một đối tượng của lớp này:

<?php $user = new User('john', 30); ?>

Bây giờ hãy tưởng tượng tình huống sau: bạn muốn gán giá trị của biến $user cho một biến khác, chẳng hạn là $test.

Nếu không phải là đối tượng mà là kiểu dữ liệu nguyên thủy, tức là chuỗi, số, mảng, v.v., thì biến $test sẽ nhận được một bản sao giá trị của biến $user.

Điều này có nghĩa là việc thay đổi bất kỳ biến nào sau đó sẽ không làm thay đổi giá trị của biến kia. Hãy xem ví dụ:

<?php $user = 1; $test = $user; // biến $test giờ có giá trị 1 $test = 2; // biến $test giờ có giá trị 2, còn $user vẫn là 1 ?>

Với đối tượng thì khác - khi gán cho một biến khác, đối tượng không được sao chép, mà được truyền bằng tham chiếu: điều này có nghĩa là cả hai biến này đều có giá trị là một đối tượng duy nhất. Điều này có một hệ quả quan trọng: nếu thay đổi một số thuộc tính của đối tượng bằng một biến, thì biến thứ hai cũng sẽ xuất hiện những thay đổi này.

Hãy cùng xem trên thực tế. Tạo một đối tượng người dùng:

<?php $user = new User('john', 30); ?>

Gán đối tượng cho một biến khác:

<?php $test = $user; ?>

Thay đổi thuộc tính name trong biến $test

<?php $test->name = 'eric'; ?>

Hãy kiểm tra xem đối tượng chung đã thay đổi chưa. In ra thuộc tính name từ biến $user:

<?php echo $user->name; // sẽ in ra 'eric'! ?>

Tạo lớp Product, trong đó có các thuộc tính sau: name, price.

Tạo một đối tượng của lớp Product, ghi nó vào biến $product1.

Gán giá trị của biến $product1 cho biến $product2. Kiểm tra xem cả hai biến đều tham chiếu đến một đối tượng duy nhất.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối