Получение значений из формы (ООП php)

#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