php overload = operator

Возможный дубликат:
Перегрузка оператора в PHP

Есть ли способ перегрузить оператор =?

Поэтому хочу, чтобы я был следующим:

class b{ function overloadis(){ // do somethng } } $a = new b(); $a = 'c'; 

В приведенном выше примере я хочу, чтобы при $ a = 'c'; , метод overloadis вызывается первым, а затем эта функция выполняет, если действие (назначить 'c' на $ a) выполняется или прервано.

Можно ли сделать это ?

Thnx заранее, Боб

Нет. PHP не поддерживает перегрузку оператора, за несколькими исключениями (как отмечает @NikiC: «PHP поддерживает перегрузку некоторых операторов, таких как [], -> и (string), а также позволяет перегружать некоторые языковые конструкции, такие как foreach») ,

Вы можете имитировать такую ​​функцию для свойств класса, используя PHP-magic-function __set() и установив соответствующее свойство в private / protected.

 class MyClass { private $a; public function __set($classProperty, $value) { if($classProperty == 'a') { // your overloadis()-logic here, eg // if($value instanceof SomeOtherClass) // $this->$classProperty = $value; } } } $myClassInstance = new MyClass(); $myClassInstance->a = new SomeOtherClass(); $myClassInstance->a = 'c'; 

Посмотрите на расширение перегрузки оператора PECL .