ID:               25772
 Comment by:       jevon at jevon dot org
 Reported By:      dmitrijsl at swh-t dot lv
 Status:           Open
 Bug Type:         Feature/Change Request
 Operating System: *
 PHP Version:      5.0.0b1 (beta1)
 New Comment:

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())


Previous Comments:
------------------------------------------------------------------------

[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

Reply via email to