为类

时间:2015-06-23 14:43:19

标签: php operator-overloading php-5.6

Python这样的PHP对象的(数学)运算符重载是否可行?我认为答案是否定的,因为我经常搜索并且一无所获。只是想确认一下。

我为(向量)点定义了类,我希望它们加起来像数字(它们对应的坐标),也像标量积一样基本操作。目前我已将其定义如下

public function multiply($x){
    $this->X -= $x*$this->X;
    $this->Y -= $x*$this->Y;
}

public function divide($x){
    if (abs($x) < 10^-6){
        die("Scalar is less than 10e-6.");
    }
    $this->X = $this->X/$x;
    $this->Y = $this->Y/$x;
}

public function dot($point){
    return (sqrt($this->X*$point->X + $this->Y*$point->Y));
}

对于当前的工具,我这样做$vec1->add($vec2)。我更喜欢这样$vec3 = $vec1 + $vec2

1 个答案:

答案 0 :(得分:1)

我认为它不是核心,但有一个名为Operator的软件包会为你做这件事。它可用here