Назначение гласит следующее: вы будете изменять калькулятор для отображения ВСЕХ предыдущих вычислений, выполненных во время веб-сеанса.Используйте переменные $ _SESSION.
Вот файл index.php, который запускает страницу:
<?php
require("header.php");
require("lib.php");
echo "<h1>Welcome to the PHP Calculator</h1>";
if($_SERVER["REQUEST_METHOD"] == "POST"){
if (isset($_SESSION["calculator"])){
$old_calculator = unserialize($_SESSION["calculator"]);
}
$calculator = new calculator($_POST["num1"], $_POST["num2"], $_POST["op"]);
$calculator->calculate();
$calculator->print_result();
$_SESSION["calculator"] = serialize($calculator);
if (isset($old_calculator)){
echo "<h3>The prior calculation was:</h3>";
$old_calculator->print_result();
}
echo "<br/><br/><h3>Perform another calculation:</h3>";
}
?>
<form action="index.php" method="post">
Operand 1: <input type="text" name="num1"><br/>
Operand 2: <input type="text" name="num2"><br>
Operation (+,-,/,*): <input type="text" name="op"><br>
<input type="submit" value="Calculate">
</form>
<?php require("footer.php"); ?>
В файле lib.php происходят все вычисления:
<?php
class calculator {
private $result;
private $op;
private $num1;
private $num2;
private $error;
public function __construct($num1, $num2, $op){
$this->num1 = $num1;
$this->num2 = $num2;
$this->op = $op;
}
protected function add(){
return $this->num1 + $this->num2;
}
protected function sub(){
return $this->num1 - $this->num2;
}
protected function div(){
return $this->num1/$this->num2;
}
protected function mult(){
return $this->num1*$this->num2;
}
public function get_result(){
return $this->result;
}
public function calculate(){
switch ($this->op){
case "+":
$this->result = $this->add();
break;
case "-":
$this->result = $this->sub();
break;
case "/":
$this->result = $this->div();
break;
case "*":
$this->result = $this->mult();
break;
default:
$this->error = true;
}
}
function print_result(){
echo "<h4>Calculator results:</h4>";
if($this->error)
echo "Error! Invalid operator \"" . $this->op . "\"";
else
echo $this->num1 . " " . $this->op . " " . $this->num2 . " = " . $this->result;
}
}
?>
Какя должен идти о сохранении вычислений от пользовательских данных в массив и печатать массив каждый раз, когда форма отправлена ??