manual-php
Version:
89 lines (75 loc) • 1.92 kB
Markdown
# 对象比较
当使用比较运算符 `==` 比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。而如果使用比较运算符 `===` ,这两个对象变量一定要指向某个类的同一个实例(即同一个对象)。
```php
class Foo
{
/**
* Just a test property.
*
* @var string
*/
public string $property;
/**
* Just a test method.
*
* @param void
* @return void
*/
public function method()
{
//
}
}
class Bar
{
/**
* Just a test property.
*
* @var string
*/
public string $property;
/**
* Just a test method.
*
* @param void
* @return void
*/
public function method()
{
//
}
}
$foo = new Foo();
$bar = new Foo();
var_dump($foo == $bar); // bool(true)
var_dump($foo != $bar); // bool(false)
var_dump($foo === $bar); // bool(false)
var_dump($foo !== $bar); // bool(true)
$foo = new Foo();
$bar = clone $foo;
var_dump($foo == $bar); // bool(true)
var_dump($foo != $bar); // bool(false)
var_dump($foo === $bar); // bool(false)
var_dump($foo !== $bar); // bool(true)
$foo = new Foo();
$foo->property = 'foo';
$bar = new Foo();
$bar->property = 'bar';
var_dump($foo == $bar); // bool(false)
var_dump($foo != $bar); // bool(true)
var_dump($foo === $bar); // bool(false)
var_dump($foo !== $bar); // bool(true)
$foo = new Foo();
$bar = new Bar();
var_dump($foo == $bar); // bool(false)
var_dump($foo != $bar); // bool(true)
var_dump($foo === $bar); // bool(false)
var_dump($foo !== $bar); // bool(true)
$foo = new Foo();
$bar = $foo;
var_dump($foo == $bar); // bool(true)
var_dump($foo != $bar); // bool(false)
var_dump($foo === $bar); // bool(true)
var_dump($foo !== $bar); // bool(false)
```