2013-07-30 116 views
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,假的,但我想比較的只是實例是對象,類本身,而不是屬性,也不值...我知道,Zend框架中,我們可以做到通過設置函數的參數類似的東西接受這樣的事情:

public function anything (Anything_Entity $something){} 

並通過東西會工作得很好,但我找不到任何方法來比較具有要忽略的屬性的對象。

+1

您可以嘗試使用['instanceof'](http://php.net/instanceof)運算符。 – BlitZ

+0

我很高興知道人們不會像我一樣睡,哈哈哈,謝謝你,我會盡快把它付諸實施。 o/ –

回答

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

是的。 ['get_class'](http://php.net/get-class)就是這樣。 – BlitZ

+0

我會嘗試他們兩個,謝謝你們! = * –

2

除了答案之外,還有幾件事情值得一提。

  1. 類型提示不是ZendFramework功能,但PHP功能。打字提示是你所描述什麼是「我知道,Zend框架中,我們可以做到通過設置函數的參數類似的東西接受這樣的事情:」

除了爲損壞提到你可以使用

if ($obj instanceof ClassName) 

來查看某個對象是特定的類

+0

瞭解。 0> 其實,我在想什麼PHP只爲基本類型設置了類型,無論我進入哪裏(這意味着PHP文檔在這裏)我只找到這樣的信息,我沒有得到正確的問題,我相信...或者找到它並不那麼容易,反正,謝謝。 :) –

2

像@CORRUPT在註釋中提到的,實現這一目標的最佳途徑是使用instanceof。例如:

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

我會嘗試,但我相信這個get_class的東西,這幾乎是我所期待的,謝謝。 :) –