магический разве что __toString
if ("$obj") if (100 > "$obj")
но правильнее возвращать объект с интерфейсом для сравнений.
PHP:
interface Comparable {
public function isEmpty()
public function isGreaterThat($withObject);
......
// или волшебный
public function compare($withObject, $operation)
}
$a = new Foo(5);
if ($a->isEmpty()) []
if ($a->isGreaterThat(20)) {}
if ($a->compare(20, Compare::GREATER_THAT))
Я бы остановился на isEmpty и забил на оопэшность
if (!$a->isEmpty() && $a->value() > 20) {}
Из коробки нет.
Есть экстеншены, которые это добавляют: http://pecl.php.net/package/operator
Плюс в своих экстеншенах на C тоже можно это делать, DateTime тому подтверждение.