Giới thiệu
PHP cung cấp hai toán tử so sánh đối tượng:
- == (bằng nhau): Trả về true nếu cả hai thuộc cùng một lớp và các thuộc tính tương ứng có giá trị giống nhau.
- === (đồng nhất): Trả về true chỉ khi chúng tham chiếu đến cùng một instance (thể hiện) của cùng một lớp.
Chúng ta sử dụng hai lớp sau để minh họa:
<?php
class test1 {
private $x;
private $y;
function __construct($arg1, $arg2) {
$this->x = $arg1;
$this->y = $arg2;
}
}
class test2 {
private $x;
private $y;
function __construct($arg1, $arg2) {
$this->x = $arg1;
$this->y = $arg2;
}
}
?>
1. Hai đối tượng cùng lớp, cùng giá trị thuộc tính
$a = new test1(10, 20); $b = new test1(10, 20); echo "Hai đối tượng cùng lớp\n"; echo "Sử dụng == : "; var_dump($a == $b); echo "Sử dụng === : "; var_dump($a === $b);
Kết quả
Hai đối tượng cùng lớp Sử dụng == : bool(true) Sử dụng === : bool(false)
2. Hai tham chiếu trỏ đến cùng một đối tượng
$a = new test1(10, 20); $c = $a; echo "Hai tham chiếu cùng đối tượng\n"; echo "Sử dụng == : "; var_dump($a == $c); echo "Sử dụng === : "; var_dump($a === $c);
Kết quả
Hai tham chiếu cùng đối tượng Sử dụng == : bool(true) Sử dụng === : bool(true)
3. Hai đối tượng khác lớp nhưng cùng giá trị thuộc tính
$a = new test1(10, 20); $d = new test2(10, 20); echo "Hai đối tượng khác lớp\n"; echo "Sử dụng == : "; var_dump($a == $d); echo "Sử dụng === : "; var_dump($a === $d);
Kết quả
Hai đối tượng khác lớp Sử dụng == : bool(false) Sử dụng === : bool(false)