Перегрузка php equals-operator

В программе PHP у меня есть массив некоторых настраиваемых объектов, и я хочу найти, содержит ли массив определенный объект. Конечно, я могу использовать array_search, но это проверяет, являются ли объекты одним и тем же объектом, а не те же переменные. Итак, я хочу иметь возможность создать свою собственную функцию сравнения для объектов, Я хочу иметь возможность делать что-то вроде этого:

class foo
{
    public $_a,$_b;
    function __construct($a,$b)
    {
        $this->_a = $a;
        $this->_b = $b;
    }

    function __equals($object)
    {
        return $this->_a == $object->_a;
    }
}
$f1 = new foo(5,4);
$f2 = new foo(4,6);
$f3 = new foo(4,5);

$array = array($f1,$f2);
$idx = array_search($f3,$array); // return 0

Возможно ли что-то подобное? Я знаю, что могу также создать свой собственный метод array_search, который использует метод из класса, но тогда мне пришлось бы использовать 2 разные функции поиска, одну для классов, у которых есть собственная функция сравнения, и одна для тех, которые не имеют ' т.

9
задан Tiddo 9 February 2011 в 16:30
поделиться