Given MyCalculator class
class MyCalculator
{
public float $a, $b, $c,
public MyCalculator $result;
public function __construct ($a, $b)
{
$this->a = $a;
$this->b = $b;
$this->result = new MyCalculator($this->c, 0)
}
public function add()
{
$this->result->c = $this->a + $this->b;
return $this->result->c;
}
public function divideBy($num)
{
$this->result->c = $this->result->c / $num;
return $this->result->c;
}
}
$calc = new MyCalculator(12, 6);
In my code works good either:
echo $calc->Add() // Displays: 15
or
echo $calc->Add()->DivideBy(3) // Displays: 5 ((6+9)/3=5)
But I cannot make them working both!
Based on the description of your problem, you will want to setup this class definition:
class MyCalculator
{
private $value1;
private $value2;
public $total;
public function __construct($value1, $value2, $total = null)
{
$this->value1 = $value1;
$this->value2 = $value2;
$this->total = $total;
}
public function add()
{
$this->total = $this->value1 + $this->value2;
return new MyCalculator(0, 0, $this->total);
}
public function divideBy($value)
{
return $this->total / $value;
}
}
What this does is set two required property values and one optional property value in the constructor, create an add
method that returns a new instance of the class where the total matches the sum of the two values passed in the constructor, and creates a divideBy
method that divides the current total by the desired number.
Here is an example of using it:
$calc = new MyCalculator(6, 9);
echo $calc->add()->divideBy(3);
Fiddle: https://onlinephp.io/c/498ed