运算符覆盖php类中的.net

时间:2012-12-22 12:39:01

标签: php

我有一个具有多个数值和功能的类 (对于某种计数类别等)。

class mBasicClass
{
    public $typ01Value = 0;
    public $typ02Value = 0;
}

我还有一些其他类,实际上是这些类的组合

class mClass
{
    public $vjA = new mBasicClass();
    public $ntB = new mBasicClass();
    public $ntC = new mBasicClass();
    public $ntD = new mBasicClass();
}

所有我想知道的 - 有没有办法在php类中编写像.net这样的操作符覆盖

以便我可以使用

$vjA + $ntB 

实际上是

$vjA->$typ01Value + $ntB ->$typ01Value
$vjA->$typ02Value + $ntB ->$typ02Value

1 个答案:

答案 0 :(得分:4)

自2001年以来,PHP对象操作符重载请求一直是一个开放票证:

https://bugs.php.net/bug.php?id=9331

所以不幸的是你不能做你所要求的:(

相反,你必须创建一个像addObjects($obj1, $obj2)这样的函数,并自己进行手动计算:

addObjects($obj1, $obj2)
{
    $new_obj = new mBasicClass();
    $new_obj->typ01Value = $obj1->typ01Value + $obj2->typ01Value;
    $new_obj->typ02Value = $obj1->typ02Value + $obj2->typ02Value;

    return $new_obj;
}

然后使用它:

$result = addOjbects($vjA, $ntB);