Possible Duplicate:
Operator Overloading in PHP
Is there a way to overload the = operator ?
So want I is the following:
class b{
function overloadis(){
// do somethng
}
}
$a = new b();
$a = 'c';
In the example above, I want that when $a = 'c'; is called, the method overloadis is called first and then that function desides if the action (assign 'c' to $a) is executed or aborted.
Is it possible to do this ?
Thnx in advance,
Bob
No. PHP doesn't support operator overloading, with a few exceptions (as noted by @NikiC: "PHP supports overloading of some operators, like [], -> and (string) and also allows overloading some language constructs like foreach").
You can imitate such a feature for class-properties, by using the PHP-magic-function __set()
and setting the respective property to private/protected.
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';
Have a look at the PECL Operator overloading extension.