Как получить данные из формы в ООП php?

152
06 апреля 2019, 02:00

Нужна помощь, как в этом коде сделать реализацию через ООП? Как сделать так чтобы класс получал данные из формы? Вот исходный код

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Курсовой на php</title>
        <style>
                fieldset 
                { 
                        display: inline-table;
                        border: 4px solid grey; /* Параметры рамки */
                        border-bottom: 1; /* Убираем линию снизу */
                        padding: 20px; /* Поля вокруг текста */
                        display: inline; /* Устанавливаем как встроенный элемент */
                        background: #efecdf; /* Цвет фона */
                        font-weight: bold; /* Жирное начертание */
                        font-size: 100%; /* Размер текста */
                        margin: 0%; /* Убираем отступы вокруг */
                        white-space: nowrap; /* Отменяем переносы текста */ 
                }
                img
                {
                    position:absolute;
                    top:5%;
                    right:49.9%;
                    width:350px;
                    height:110px;
                    border:1px  solid grey;
                }
                .n
                {
                    position:absolute;
                    top:14.7%;
                    right:87%;  
                }
        </style>
</head>
<body bgcolor='GhostWhite'>
<form action="" method="post">
    <h3><fieldset >
    <legend>Линейная экстраполяция</legend>
        <table width="30%">
                    Введите x:<input type="number" name="x"/> <br/>
            <td>
                    Введите x<sub>1</sub>:<input type="number" name="x1"/><br/>
                    Введите x<sub>2</sub>:<input type="number" name="x2"/><br/>
            </td>
            <td>
                    Введите y<sub>1</sub>:<input type="number" name="y1"/> <br/>
                    Введите y<sub>2</sub>:<input type="number" name="y2"/> <br/>
            </td>
        </table>
        <input type="submit" value="Отправить"/><br/>
            </form>
            <form action="index.php" method="post">
                <input class='n' type="submit" value="Вернуться"/> 
            </form>
        </fieldset>
        <br/>
<?php
error_reporting(0);
$start = microtime(true);
                $x=$_POST['x'];
    $x1=$_POST['x1'];       $y1=$_POST['y1'];
    $x2=$_POST['x2'];       $y2=$_POST['y2'];

if ( ((strlen($x)>0)) and ((strlen($x1)>0)) and ((strlen($x2)>0))  and ((strlen($y1)>0)) and ((strlen($y2)>0)) and ($x2-$x1!=0))
    {
        $y=$y1+(($y2-$y1)/($x2-$x1))*($x-$x1);
        echo "Y=".round(($y),3)."<br/>";      
    }
else
    {
        echo "Вы некорректно ввели данные <br/>";
    }


echo  "Время выполнения скрипта: ".round((microtime(true)-$start),6)." сек";
?>
</form>
<img src="ex.jpg"/>
</body>
</html>

А вот уже класс

class A
{
    fucntion abcInt()
    {
        if ( ((strlen($x)>0)) and ((strlen($x1)>0)) and ((strlen($x2)>0))  and ((strlen($y1)>0)) and ((strlen($y2)>0)) and ($x2-$x1!=0))
    {
        $y=$y1+(($y2-$y1)/($x2-$x1))*($x-$x1);
        echo "Y=".round(($y),3)."<br/>";      
    }
        else
    {
        echo "Вы некорректно ввели данные <br/>";
    }
    }
}
Answer 1

Чтобы всё было красиво, лучше освоить паттерн MVC и использовать его (простой пример реализации). Ещё можно выучить какой-нибудь фреймворк, где многое уже реализовано.

Корявый пример: Из какой конкретно формы не указано, поэтому будем считать, что данные берём из первой формы. Для начала нужно указать атрибут action (в приведённом он пустой): action="getdata.php". В файле getdata.php подключаем наш класс через require (документация) или через namespace (документация и автозагрузка классов).

В класс A добавляем поле public $post;

После того, как мы создали файл для обработки формы и подключили класс, создаём в getdata.php функцию, например, parseForm(), где создаём экземпляр класса A: $a = new A(); $a->post = $_POST. Теперь в $this->post(Внутри класса A) хранится суперглобальный массив POST. Чтобы достать, например, поле y1, нужно написать $y1 = $this->post['y1'].

READ ALSO
Как разбить вывод wp_get_archives ($args) по годам?

Как разбить вывод wp_get_archives ($args) по годам?

Сейчас функция выводит мне весь список месяцов с годами типа: Январь 2016 ит

143
Методика разработки классов PHP

Методика разработки классов PHP

Подскажите пожалуйста книги или статьи по методике разработки классовЗадача:

143
Как лучше реализовать режим разработки?

Как лучше реализовать режим разработки?

Есть проект написанный на PHP на паттерне MVCВсё самописное

146
Правильный запрос к базе. ORM Eloquent. Laravel

Правильный запрос к базе. ORM Eloquent. Laravel

Есть объект folder в БД у которого существует id

145