ID: 25772 Updated by: [EMAIL PROTECTED] Reported By: dmitrijsl at swh-t dot lv -Status: Open +Status: Wont fix Bug Type: Feature/Change Request Operating System: * PHP Version: 5.0.0b1 (beta1) New Comment:
We're not going to have more magic then there already is; those things are going to be to complicated and confusing (See the __string()) issue. Previous Comments: ------------------------------------------------------------------------ [2004-04-14 22:58:21] jevon at jevon dot org 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()) ------------------------------------------------------------------------ [2003-10-07 05:21:33] [EMAIL PROTECTED] 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. ------------------------------------------------------------------------ [2003-10-07 04:05:43] 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. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=25772&edit=1