|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-10-07 04:05 UTC] dmitrijsl at swh-t dot lv
Description:
------------
If a class defines a __equals($other) function, invoke that function on object comparison. Example:
==========================
class MyClass {
public function __construct($value) {
$this->value = $value;
}
/**
* This function should be invoked on object
* comparison with == or != operators.
*/
public function __equals($other) {
if ($other instanceof MyClass) {
return ((int)$this->value
== (int)$other->value);
} else {
return false;
}
}
private $value;
}
$a = new MyClass(3.14);
$b = new MyClass(3.13);
if ($a == $b) {
echo '$a equals $b';
}
==========================
The comparison of $a and $b should result in the invokation of __equals function of MyClass. The same should apply to the != (not equals) operator.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 15:00:01 2025 UTC |
If at all then we should be able to do all comparisons directly by __compare($other, $operator) where operator is one of {<,<=,==,!=,>,>=} or by another method __less() which performs a < test so that __less() and __equals() can be used to emulate all other tests.Would love this feature! Java implements this through: class Object { boolean equals(Object o); } So you could either make all user-defined objects include a simple equals() function [and similarly, identical()]. Or perhaps, develop the aforementioned magic __equals() [and __identical()] functions. (As well as __less())