类与对象:对象比较

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 class

o1 == o2 : TRUE

o1 != o2 : FALSE

o1 === o2 : FALSE

o1 !== o2 : TRUE

Two references to the same instance

o1 == o2 : TRUE

o1 != o2 : FALSE

o1 === o2 : TRUE

o1 !== o2 : FALSE

Instances of two different classes

o1 == o2 : FALSE

o1 != o2 : TRUE

o1 === o2 : FALSE

o1 !== o2 : TRUE

Note: 

PHP 扩展中可以自行定义对象比较的原则。 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月29日

热门专题

大理科技管理学校|大理科技管理学校,大理科技,大理科技中等职业技术学校,大理科技管理中等职业技术学校,大理科技学校
大理科技管理学校
云南高职单招|云南单招,云南单招网,云南高职单招网,云南高职单招,云南单招学校,云南单招培训
云南高职单招
自考本科|自考本科有用吗,自考文凭,自考本科文凭,自考文凭有用吗,自考本科文凭有用吗,自考文凭承认吗
自考本科
云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司
国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
安徽中源管业有限公司|安徽中源管业有限公司,安徽中源管业有限公司介绍,安徽中源管业有限公司电话,安徽中源管业有限公司地址,安徽中源管业有限公司厂家,安徽中源管业有限公司电力管,安徽中源管业有限公司管材
安徽中源管业有限公司
易捷尔单招|易捷尔单招,易捷尔单招培训,易捷尔单招报名,易捷尔单招考试,易捷尔单招培训学校,易捷尔单招分数
易捷尔单招

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部