有没有比较两个对象而不比较属性的方法?

时间:2013-07-30 04:45:12

标签: php yii

我有两个对象,在Yii框架中我们可以这样做:

$objectOne = Anything::model(); //and this is one object;
$objectTwo = Anything::model()->findByPk("1"); //and this is another object of the same class;

所以现在如果我比较这两个它将返回0,false,但我想要比较的只是对象的实例,类本身,而不是属性和值......我知道在Zend Framework中我们可以通过设置函数的参数来做类似的事情:

public function anything ( Anything_Entity $something ){}

通过这种方式可以很好地工作,但我找不到任何方法来比较具有要忽略的属性的对象。

3 个答案:

答案 0 :(得分:3)

与CORRUPT评论一样,您可以使用instanceof。另外,您还可以使用get_class

// using instanceof
if ($obj1 instanceof SomeClass and $obj2 instanceof SomeClass) {
    // Do something
}

// using get_class
if (get_class($obj1) === get_class($obj2)) {
    // Do something
}

答案 1 :(得分:2)

除了答案之外,还有一些值得一提的事情。

  1. 类型提示不是ZendFramework功能,而是php功能。打字提示就是你所描述的“我知道在Zend Framework中我们可以通过设置一个函数的参数来接受类似的东西:”
  2. 除了提到CORRUPT之外,你可以使用

    if ($obj instanceof ClassName) 
    

    查看某个对象是否属于特定类

答案 2 :(得分:2)

与@CORRUPT在评论中提到的一样,实现此目的的最佳方法是使用instanceof。例如:

if ($objectOne instanceof Anything) {
    // do something
}