#php #oop
Вопрос:
Я изучаю ООП на PHP, и в упражнении я не знаю, как отправлять данные формы объектам и вводить объекты в массив. Я просматривал множество учебных пособий и форумов на Youtube, но не мог найти или понять многого.
В упражнении сначала запрашивается класс для управления продуктами супермаркета, атрибутами которого являются цифровой ключ, описание, цена и акции. Он также просит меня определить конструктор с параметрами в качестве методов.
<?php
class Product{
private $key;
private $description;
private $price;
private $stock;
public function __construct($key, $description, $price, $stock){
$this->key = $key;
$this->description = $description;
$this->price = $price;
$this->stock = $stock;
}
public function setKey($key){
$this->key = $key;
}
public function getKey(){
return $this->key;
}
public function setDescription($description){
$this->description = $description;
}
public function getDescription(){
return $this->description;
}
public function setPrice($price){
$this->price = $price;
}
public function getPrice(){
return $this->price;
}
public function setStock($stock){
$this->stock = $stock;
}
public function getStock(){
return $this->stock;
}
}
Затем он просит меня использовать этот класс для объявления массива объектов и управления запасом до 50 товаров с помощью метода POST. Кроме того, в этой программе должно быть меню со следующими пунктами: Добавить продукт, Удалить продукт, Перечислить продукт, Отсортировать продукт по номеру ключа и выйти.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<form method="post">
<label for="key">Enter product key</label></br>
<input type="number" name="key" id="key" required></br>
<label for="description">Enter product description</label></br>
<input type="text" name="description" id="description" required></br>
<label for="price">Enter product price</label></br>
<input type="text" name="price" id="price" required></br>
<label for="stock">Enter the stock of the product</label></br>
<input type="number" name="stock" id="stock" required></br>
<button type="submit" name="add" id="add">Add product</button>
<button type="submit" name="baja" id="baja">Remove product</button>
<button type="submit" name="list" id="list">List product</button>
<button type="submit" name="Sort" id="Sort">Sort product</button>
<button type="submit" name="exit" id="exit">Exit</button>
</form>
</body>
</html>
Вот в чем проблема: я не знаю, как вставить объект в массив, не удалив предыдущие, и я не знаю, как распечатать все введенные объекты.
<?php
if (strlen(session_id()) < 1) {
session_start();
}
include_once("product.php");
if(isset($_POST["add"])){
$_SESSION["quantity"] = $_SESSION["quantity"] 1;
$quantity = $_SESSION["quantity"];
if($quantity<=50){
$oproduct = new Product($_POST["key"], $_POST["description"], $_POST["price"],
$_POST["stock"]);
$oproduct->setKey($_POST["key"]);
$oproduct->setDescription($_POST["description"]);
$oproduct->setPrice($_POST["price"]);
$oproduct->setStock($_POST["stock"]);
$_SESSION["prod"]= $oproduct;
print_r($_SESSION["prod"]);
}
}
Ответ №1:
Динамически добавляйте []
новый продукт в массив:
$_SESSION["prod"][] = $oproduct;
Или вы могли бы использовать key
, если он уникален:
$_SESSION["prod"][$_POST["key"]] = $oproduct;
Кроме того, похоже, что вы уже добавили информацию здесь:
$oproduct = new Product($_POST["key"], $_POST["description"], $_POST["price"], $_POST["stock"]);
Так зачем ты это делаешь?
$oproduct->setKey($_POST["key"]);
$oproduct->setDescription($_POST["description"]);
$oproduct->setPrice($_POST["price"]);
$oproduct->setStock($_POST["stock"]);