Подтвердить что ты не робот

Php overload = оператор

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

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

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

class b{
    function overloadis(){
       // do somethng
    }
}

$a = new b();
$a = 'c';

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

class MyClass
{
    private $a;

    public function __set($classProperty, $value)
    {
        if($classProperty == 'a')
        {
            // your overloadis()-logic here, e.g.
            // if($value instanceof SomeOtherClass)
            //     $this->$classProperty = $value;
        }
    }
}

$myClassInstance = new MyClass();
$myClassInstance->a = new SomeOtherClass();
$myClassInstance->a = 'c';