为 类 定义数学运算符
Defining mathematical operator for classes
PHP 对象是否可以(数学)运算符重载,就像 Python 一样?我认为答案是否定的,因为我搜索了很多却一无所获。只是想确认一下。
我已经为(向量)点定义了 类,我希望它们像数字(它们对应的坐标)一样相加,并且像标量积一样是基本运算。目前我定义如下
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
.
我不认为它在核心中,但有一个名为 Operator 的包可以为您完成。它可用 here。
PHP 对象是否可以(数学)运算符重载,就像 Python 一样?我认为答案是否定的,因为我搜索了很多却一无所获。只是想确认一下。
我已经为(向量)点定义了 类,我希望它们像数字(它们对应的坐标)一样相加,并且像标量积一样是基本运算。目前我定义如下
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
.
我不认为它在核心中,但有一个名为 Operator 的包可以为您完成。它可用 here。