PHP的类与对象中文手册:对象比较
2019-09-07 阅读 : 次
PHP 5 中的对象比较要比 PHP 4 中复杂,所期望的结果更符合一个面向对象语言。
当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。
而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)。
通过下面的示例可以理解以上原则。
Example #1 PHP 5 的对象比较
<?php
function bool2str($bool)
{
if ($bool === false) {
return 'FALSE';
} else {
return 'TRUE';
}
}
function compareObjects(&$o1, &$o2)
{
echo 'o1 == o2 : ' . bool2str($o1 == $o2) . "/n";
echo 'o1 != o2 : ' . bool2str($o1 != $o2) . "/n";
echo 'o1 === o2 : ' . bool2str($o1 === $o2) . "/n";
echo 'o1 !== o2 : ' . bool2str($o1 !== $o2) . "/n";
}
class Flag
{
public $flag;
function Flag($flag = true) {
$this->flag = $flag;
}
}
class OtherFlag
{
public $flag;
function OtherFlag($flag = true) {
$this->flag = $flag;
}
}
$o = new Flag();
$p = new Flag();
$q = $o;
$r = new OtherFlag();
echo "Two instances of the same class/n";
compareObjects($o, $p);
echo "/nTwo references to the same instance/n";
compareObjects($o, $q);
echo "/nInstances of two different classes/n";
compareObjects($o, $r);
?>
以上例程会输出:
Two instances of the same classo1 == o2 : TRUEo1 != o2 : FALSEo1 === o2 : FALSEo1 !== o2 : TRUETwo references to the same instanceo1 == o2 : TRUEo1 != o2 : FALSEo1 === o2 : TRUEo1 !== o2 : FALSEInstances of two different classeso1 == o2 : FALSEo1 != o2 : TRUEo1 === o2 : FALSEo1 !== o2 : TRUE
Note:
PHP 扩展中可以自行定义对象比较的原则。
本文地址:https://www.helloaliyun.com/tutorial/289.html
上一篇:PHP的类与对象中文手册:对象复制 下一篇:PHP的类与对象中文手册:类型约束