Php overload = оператор
Возможный дубликат:
Перегрузка операторов в PHP
Есть ли способ перегрузить оператор =?
Поэтому хочу, чтобы я был следующим:
class b{
function overloadis(){
// do somethng
}
}
$a = new b();
$a = 'c';
В приведенном выше примере я хочу, чтобы при $a = 'c';, метод overloadis вызывается первым, а затем эта функция выполняет, если действие (назначить 'c' на $a) выполнено или прервано.
Можно ли это сделать?
Thnx заранее,
Боб
Ответы
Ответ 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';
Ответ 3
Посмотрите на перегрузку оператора PECL.