2

我有两个对象,在 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 ){}

这样一来,事情就可以很好地工作,但是我找不到任何方法来比较具有要忽略的属性的对象。

4

3 回答 3

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
}
于 2013-07-30T04:51:31.657 回答
2

除了答案之外,这里还有几件事值得一提。

  1. 类型提示不是 ZendFramework 的特性,而是 php 的特性。键入提示是您所描述的“我知道在 Zend Framework 中,我们可以通过设置函数的参数来接收类似这样的内容来做类似的事情:”

除此之外,正如 CORRUPT 提到的,您可以使用

if ($obj instanceof ClassName) 

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

于 2013-07-30T04:50:41.913 回答
2

就像@CORRUPT 在评论中提到的那样,实现这一目标的最佳方法是使用 instanceof. 例如:

if ($objectOne instanceof Anything) {
    // do something
}
于 2013-07-30T04:51:06.033 回答