#php #oop
#php #ооп
Вопрос:
Как я могу получить значения $ val1, $ val2 из формы?
Вероятно, нужно использовать дизайн, подобный этому:
$obj->Calculator($_POST['val1'], $_POST['val1']);
но .. куда вставить?
<?php
class Calculator {
private $_val1 , $_val2;
public function __construct($val1, $val2){
$this->_val1 = $val1;
$this->_val2 = $val2;
}
public function add(){
return $this->_val1 $this->_val2;
}
public function subtract(){
return $this->_val1 - $this->_val2;
}
public function multiply (){
return $this->_val1 * $this->_val2;
}
public function divide () {
return $this->_val1 / $this->_val2;
}
}
$calc = new Calculator(3,4);
echo "<p>3 4 = ".$calc->add(). "</p>";
?>
<html>
<head>
<title>Calculator</title>
</head>
<body>
<form action='' method='POST'>
Enter Number:
<input type='text' name='val1' value="<?=$val1;?>">
<input type='text' name='val2' value="<?=$val2;?>">
<input type='submit' name='submit' value='Calculate'>
</form>
</body>
</html>
Комментарии:
1.
$calc = new Calculator($_POST['val1'], $_POST['val1']);
?2.
new Calculator($_POST['val1'], $_POST['val1']);
Ответ №1:
Вы можете использовать что-то вроде этого:
$val1 = (int) $_POST['val1'];
$val2 = (int) $_POST['val2'];
$calc = new Calculator($val1, $val2);
echo '<p>'.$val1.' '.$val2.' = '.$calc->add().'</p>';
Редактировать: Вы также можете вводить переменные приведения внутри конструктора:
class Calculator {
private $_val1 , $_val2;
public function __construct($val1, $val2){
$this->_val1 = (int) $val1;
$this->_val2 = (int) $val2;
}
...
}
$val1 = $_POST['val1'];
$val2 = $_POST['val2'];
$calc = new Calculator($val1, $val2);
echo '<p>'.$val1.' '.$val2.' = '.$calc->add().'</p>';
Комментарии:
1. Возможно, было бы лучше ввести приведение переменных внутри
Calculator
в__construct()
.
Ответ №2:
Не забывайте использовать
is_numeric($val1);
чтобы проверить, являются ли ваши входные данные числовыми.
Читать дальше php.net is_numeric