У меня проблемы с пониманием OOP ...
Допустим, я хотел создать страницу, которая добавляет нового пользователя в базу данных и хотел работать с классами.
Для этого Сценарий Я бы создал форму с функцией.
Существуют формы для каждой функции CRUD - renderHTMLFormAddUser ():
...
<form action="" method="POST" >;
<label>Shopname*</label><br>;
<input type="text" name="shopname" class="input_wide" required><br>;
<label>Username*</label><br>;
<input type="text" name="username" class="input_wide" required><br>;
<input type="submit" value="add" name="submit" >
...
класс DataBaseConnector:
class DataBaseConnector
{
protected $con;
public function __construct()
{
$this->con=mysqli_connect('mariaDB','root','123456','produktmuster');
}
public function getConnection()
{
return $this->con;
}
public function __destruct()
{
$this->con->close();
}
}
и класс QueryDatabase, для которого требуется соединение DataBaseConnector в качестве параметра передачи в его конструкторе:
class QueryDatabase
{
private $con;
public function __construct(DataBaseConnector $con)
{
$this->con = $con;
}
public function addUser($shopname,$username)
{
$sql = "INSERT INTO `brandportal_manager`( `Shopname`, `Username`) VALUES ($shopname,$username)";
$result = mysqli_query($this->con->connect(), $sql);
return $result;
}
Чтобы получить значения $ _POST в функции добавления пользователя QueryDatabase, мне нужно объявить переменные следующим образом:
$shopname= $_POST['shopname'];
$username= $_POST['username'];
Но есть ли лучший способ сделать это? Например, renderHTMLFormAddUser()->'shopname'
.
Я просто пытаюсь понять, какой самый чистый способ кодирования в этом сценарии. Потому что при использовании функции для отображения форм adduser. php будет выглядеть примерно так:
$createuserform=new Forms();
$createuserform->renderHTMLFormAddUser();
$shopname= $_POST['shopname']; // this is what confuses me, you'd have to look into the
$username= $_POST['username']; // renderHTMLFormAddUser() function to see the code
$db = new DataBaseConnector();
$query= new QueryDatabase();
$query->addUser($shopname,$username)
Должен ли я просто создать собственную страницу, которая отправляет форму на страницу, которая затем использует данные? В начале я просто не использовал никаких параметров передачи с функцией addUser, и это началось с объявления $ _POSTs:
$shopname= $_POST['shopname'];
$username= $_POST['username'];
$sql = "INSERT INTO `brandportal_manager`( `Shopname`, `Username`) VALUES ($shopname,$username)";
...
Но мне сказали, что это небезопасно - в этом отношении я очищаю свой данные, но ради более простого примера я отбросил весь ненужный код.
Если я выберу совершенно другой подход, просто хотел бы знать самый простой способ добавления входных данных формы в базу данных.