【发布时间】:2020-10-16 14:18:42
【问题描述】:
我如何创建一个类计算器,女巫可以执行不同的操作,例如:加法,乘法,但使用这种格式 $test->two()->add()->one() ==> 结果是 3 .
Can you help me ?
thank you
class Test
{
private $result;
function __construct()
{
$this->result = 0;
}
function one()
{
$this->result = 1;
return $this;
}
function two()
{
$this->result = 2;
return $this;
}
function add()
{
$this->result += $this->result;
return $this;
}
function getResult()
{
return $this->result;
}
}
$test = new Test();
$a = $test->One()->add()->two();
var_dump($a->getResult());
I did this programm but i didn't had the correct response
the result returned is 2 but i must have 3 (1+2)
【问题讨论】:
-
您可以使用:
2 + 1。这也将导致 3。这不是更简单吗? -
感谢 Kiko 的回复,但我对这种格式有一个测试要做,我不知道该怎么做。
-
好的,你还在学习。好吧,数字和运算符是类的方法。这些方法需要返回
$this,以便它们可以被链接。在课堂上,您需要维护计算器的状态。等等。这些提示有帮助吗? -
我该怎么做?你能给我举个例子吗?
-
$this->result = 2;将结果设置为正好两个。这会覆盖任何以前的值。这样做没有任何意义。而且 add() 位也没有任何意义,因为您 a) 试图将结果添加到 itself,并且 b) 通过您想要的逻辑,您甚至不知道要添加的第二件事是,因为您尚未指定 two() 调用。这是我说 ->one(), ->two() 的东西不起作用的另一个原因。我知道你想制作某种“可读”的语法,但实际的逻辑是完全倒退且不可行的。
标签: php design-patterns