From:             dmitrijsl at swh-t dot lv
Operating system: Windows 2000
PHP version:      5.0.0b1 (beta1)
PHP Bug Type:     Feature/Change Request
Bug description:  Custom comparison of objects: __equals method

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 bug report at http://bugs.php.net/?id=25772&edit=1
-- 
Try a CVS snapshot (php4):  http://bugs.php.net/fix.php?id=25772&r=trysnapshot4
Try a CVS snapshot (php5):  http://bugs.php.net/fix.php?id=25772&r=trysnapshot5
Fixed in CVS:               http://bugs.php.net/fix.php?id=25772&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=25772&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=25772&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=25772&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=25772&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=25772&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=25772&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=25772&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=25772&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=25772&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=25772&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=25772&r=isapi
Install GNU Sed:            http://bugs.php.net/fix.php?id=25772&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=25772&r=float

Reply via email to