📄 language.oop.object-comparison.html
字号:
o1 === o2 : FALSEo1 !== o2 : TRUE</pre></div> </pre></div> </div> Which is the output we will expect to obtain given the comparison rules above. Only instances with the same values for their attributes and from the same class are considered equal and identical. </p> <p class="para"> Even in the cases where we have object composition, the same comparison rules apply. In the example below we create a container class that stores an associative array of <b class="classname">Flag</b> objects. <div class="example"> <p><b>Example #2 Compound object comparisons in PHP 4</b></p> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">FlagSet </span><span style="color: #007700">{<br /> var </span><span style="color: #0000BB">$set</span><span style="color: #007700">;<br /><br /> function </span><span style="color: #0000BB">FlagSet</span><span style="color: #007700">(</span><span style="color: #0000BB">$flagArr </span><span style="color: #007700">= array()) {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">set </span><span style="color: #007700">= </span><span style="color: #0000BB">$flagArr</span><span style="color: #007700">;<br /> }<br /><br /> function </span><span style="color: #0000BB">addFlag</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">, </span><span style="color: #0000BB">$flag</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">set</span><span style="color: #007700">[</span><span style="color: #0000BB">$name</span><span style="color: #007700">] = </span><span style="color: #0000BB">$flag</span><span style="color: #007700">;<br /> }<br /><br /> function </span><span style="color: #0000BB">removeFlag</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">) {<br /> if (</span><span style="color: #0000BB">array_key_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">, </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">set</span><span style="color: #007700">)) {<br /> unset(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">set</span><span style="color: #007700">[</span><span style="color: #0000BB">$name</span><span style="color: #007700">]);<br /> }<br /> }<br />}<br /><br /><br /></span><span style="color: #0000BB">$u </span><span style="color: #007700">= new </span><span style="color: #0000BB">FlagSet</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$u</span><span style="color: #007700">-></span><span style="color: #0000BB">addFlag</span><span style="color: #007700">(</span><span style="color: #DD0000">'flag1'</span><span style="color: #007700">, </span><span style="color: #0000BB">$o</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$u</span><span style="color: #007700">-></span><span style="color: #0000BB">addFlag</span><span style="color: #007700">(</span><span style="color: #DD0000">'flag2'</span><span style="color: #007700">, </span><span style="color: #0000BB">$p</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$v </span><span style="color: #007700">= new </span><span style="color: #0000BB">FlagSet</span><span style="color: #007700">(array(</span><span style="color: #DD0000">'flag1'</span><span style="color: #007700">=></span><span style="color: #0000BB">$q</span><span style="color: #007700">, </span><span style="color: #DD0000">'flag2'</span><span style="color: #007700">=></span><span style="color: #0000BB">$p</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">$w </span><span style="color: #007700">= new </span><span style="color: #0000BB">FlagSet</span><span style="color: #007700">(array(</span><span style="color: #DD0000">'flag1'</span><span style="color: #007700">=></span><span style="color: #0000BB">$q</span><span style="color: #007700">));<br /><br />echo </span><span style="color: #DD0000">"\nComposite objects u(o,p) and v(q,p)\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">compareObjects</span><span style="color: #007700">(</span><span style="color: #0000BB">$u</span><span style="color: #007700">, </span><span style="color: #0000BB">$v</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #DD0000">"\nu(o,p) and w(q)\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">compareObjects</span><span style="color: #007700">(</span><span style="color: #0000BB">$u</span><span style="color: #007700">, </span><span style="color: #0000BB">$w</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> <div class="example-contents"><p>The above example will output:</p></div> <div class="example-contents"><pre><div class="cdata"><pre>Composite objects u(o,p) and v(q,p)o1 == o2 : TRUEo1 != o2 : FALSEo1 === o2 : TRUEo1 !== o2 : FALSEu(o,p) and w(q)o1 == o2 : FALSEo1 != o2 : TRUEo1 === o2 : FALSEo1 !== o2 : TRUE</pre></div> </pre></div> </div> </p> </div><hr /><div style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="language.oop.html">Classes and Objects (PHP 4)</a></div> <div class="next" style="text-align: right; float: right;"><a href="language.oop5.html">Classes and Objects (PHP 5)</a></div> <div class="up"><a href="language.oop.html">Classes and Objects (PHP 4)</a></div> <div class="home"><a href="index.html">PHP Manual</a></div></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -