Перехват ++/--

demongloom

Новичок
Перехват ++/--

Можно ли перехватить операции над переменной как $a++ или $a-- если она является обьектом?

PHP 5.0
 

[sid]

Новичок
Нет! ZE2 не поддерживает перегрузку операторов. За исключением оператора = (overloading __set/__get).
 

tony2001

TeaM PHPClub
зато работа с *атрибутами* идет именно через __set/__get.
включая инкремент/декремент.
 

[sid]

Новичок
tony2001
Если аттрибут существует, то обновляется значения аттрибута, а __set/__get не вызываются! Они вызываются только в случае отсутствия самих аттрибутов, как и __call.

Еще следует отметить метод __toString(), но он работает только с конструкциями echo/print.
 

demongloom

Новичок
Да это мне все известно. Думал, а вдруг есть некий магический итератор, типа array access, который позволяет перехватывать и такое действие над переменной-обьектом.

ЗЫ:

А как через __set(), __get() перехватывать для обьявленых и существующих переменных класса?
 

tony2001

TeaM PHPClub
>Если аттрибут существует, то обновляется значения аттрибута, а __set/__get не
>вызываются! Они вызываются только в случае отсутствия самих аттрибутов, как и __call.

я в курсе.
но спасибо, что сообщил.
 

demongloom

Новичок
Жаль. Хочется больших возможностей в overloading.
К примеру перехват различных операций +,-,/,*,., и т.д.
 

demongloom

Новичок
Хых... типичное опен сурсное предложение. Типа как RTFM.

Только чтоб я такой патч написал мне нужно:
1. Знать очень хорошо си.
2. Знать очень хорошо исходники пхп.
3. Быть как минимум крупным девелопером в zend.
4. Выиграть крупную агит компанию по внедрению этого в пхп 5.1, с разьеснением леммингам вопроса "нах оно надо?".

Проще дождаться какого нибудь пхп 6.0
 

tony2001

TeaM PHPClub
ерунда.
единственное, что нужно - это желание.
можно ныть на каждом углу, а можно захотеть и сделать.

правда, могу заранее разочаровать - 99%, что это никогда не войдет в PHP.
PHP - это не C++.
 

demongloom

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

demongloom

Новичок
Потому что я хочу реализовать типизацию. Создал классы различных типов, начиная от булевых и кончая массивами. Просто некоторые вещи невозможно реализовать, так как нет просто напросто столь глубокого overloading. Хорошо что хоть array access есть.
 
Сверху