php overload = operator

时间:2011-09-07 14:38:51

标签: php oop operator-overloading overloading

  

可能重复:
  Operator Overloading in PHP

有没有办法重载=运算符?

所以我想要的是以下内容:

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

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

在上面的例子中,当$ a ='c'时我想要那个;调用方法,首先调用方法overloadis,然后该函数决定是否执行或中止操作(将'c'分配给$ a)。

是否可以这样做?

Thnx提前, 鲍勃

3 个答案:

答案 0 :(得分:11)

没有。 PHP不支持运算符重载,但有一些例外(如@NikiC所述:“PHP支持重载某些运算符,如[], - >和(字符串),并且还允许重载某些语言结构,如foreach”)。

答案 1 :(得分:5)

您可以使用PHP-magic-function __set()并将相应的属性设置为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';

答案 2 :(得分:3)

查看PECL Operator overloading扩展程序。