пару вопросов по ООП

shureen

Милорд Лось Кристофер
пару вопросов по ООП

Доброго времени суток!
1) Возможно ли как-нибудь типитизировать PHP? Например:
PHP:
class int{
private $x;
function __construct ($x){
 $this->x = (int) $x;
}
Чтобы, например:
PHP:
$x = new int (5);
$y = new int (6);
echo $x + $y; // вывело бы 11
Можно ли как-нибудь такое релиазовать, чтобы получать это число не так например: echo $x->getX(), а именно echo $x?
А если такого нельзя... тогда ещё один вопросик. Можно ли и как делать что-нибудь типа (как в С++):
PHP:
bool operator == ($obj0, $obj1){
....
}
Заранее благодарю!!!
 

Rammstein

PHPClub::News
Первое - нет. В PHP нет возможности переопределять операторы.

Второе - да. В пятой версии есть мэджик _toString()
 

demongloom

Новичок
В пхп подобный фокус с ооп будет чреват большими трудностями.

Можно перегрузить операторы операций сложения, присваивания и т.д., но нельзя переопределить базовые классы. Также нельзя переопределить конверсию в какой то определенный тип кроме string (__toString()) и то будет весьма коряво работать.
Перегрузку можно осуществить за счет pecl operator.
http://pecl.php.net/package/operator

Operator overloading for: +, -, *, /, %, <<, >>, ., |, &, ^, ~, !, ++, --,
+=, -=, *=, /=, %=, <<=, >>=, .=, |=, &=, ^=, ~=,
==, !=, ===, !==, <, and <= operators.
Conditional support for > and >= available with application of a patch.

Не говоря уж об быстродействии.

Конечно оффтоп, но если хочется побаловаться с перегрузкой, советую глянуть на ruby и подобные языки.
 
Сверху