您的位置:首页技术文章
文章详情页

PHP基础之类和对象18——对象比较

浏览:18日期:2022-09-14 18:54:41

PHP 5 中的对象比较要比 PHP 4 中复杂,所期望的结果更符合一个面向对象语言。

当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。

而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)。

通过下面的示例可以理解以上原则。

Example #1 PHP 5 的对象比较

<?phpfunction 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 classn';compareObjects($o, $p);echo 'nTwo references to the same instancen';compareObjects($o, $q);echo 'nInstances of two different classesn';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 扩展中可以自行定义对象比较的原则。

标签: PHP
相关文章: