php overload = operator [duplicate]

2019-01-27 16:06发布

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

3条回答
Explosion°爆炸
2楼-- · 2019-01-27 16:58

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").

查看更多
可以哭但决不认输i
3楼-- · 2019-01-27 17:01

Have a look at the PECL Operator overloading extension.

查看更多
beautiful°
4楼-- · 2019-01-27 17:03

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';
查看更多
登录 后发表回答