Правильно ли я использую класс? Парни, я создал класс отчет. Верно ли создал сам файл logs.php, где используется мой класс и нет ли грубых ошибок в самом классе?class Logs
{
protected $db;
public $id;
public $text;
public function __construct($db){
$this->db = $db;
}

public function create($text){
$query = "INSERT INTO `logs` (`date`, `text`) VALUE (NOW(), ?)";
$stmt = $db->prepare($query);
if($stmt->execute(array($text))){
return true;
}else{
return false;
}
}

public function delete($id){
$stmt = $db->prepare("DELETE FROM `logs` WHERE `id` = ?");
if($stmt->execute(array($id))){
return true;
}else{
return false;
}
}

public function getAll($id = 0){
if(!empty($id)){
$query ="SELECT * FROM `logs` WHERE `id` = '".intval($id)."'";
}else{
$query ="SELECT * FROM `logs`";
}
$stmt = $db->query($query);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
//logs.php ВОПРОС БОЛЬШЕ К ЭТОЙ ЧАСТИ КОДА
$logs = new Logs(DB:instance());
if(isset($_POST['add'], $_POST['text'])){
if($logs->create($_POST['text'])){
echo 'Запись добавлена';
}else{
echo 'Ошибка добавления';
}
}
if(isset($_GET['del_id'])){
if($logs->delete($_GET['del_id'])){
echo 'Запись удалена';
}
}
echo 'Все отчеты';
echo '';
foreach($logs->getAll as $v){
echo ''.$v['date'].': '.$v['text'].'';
}
echo '';

21 Авг 2019 в 07:00
169 +1
0
Ответы
1

В вашем классе Logs есть несколько ошибок:

В методах create, delete и getAll вы забыли добавить $this-> перед вызовом переменной $db. Вместо этого нужно использовать $this->db.

В методе getAll вы используете $db вместо $this->db.

В методе getAll необходимо добавить параметр $this->db в функцию query.

В методе getAll, вместо $stmt->fetchAll(PDO::FETCH_ASSOC) нужно использовать $stmt->fetchAll(PDO::FETCH_ASSOC).

Исправленный класс Logs:

class Logs
{
protected $db;
public $id;
public function __construct($db){
$this->db = $db;
}
public function create($text){
$query = "INSERT INTO `logs` (`date`, `text`) VALUE (NOW(), ?)";
$stmt = $this->db->prepare($query);
if($stmt->execute(array($text))){
return true;
}else{
return false;
}
}
public function delete($id){
$stmt = $this->db->prepare("DELETE FROM `logs` WHERE `id` = ?");
if($stmt->execute(array($id))){
return true;
}else{
return false;
}
}
public function getAll($id = 0){
if(!empty($id)){
$query ="SELECT * FROM `logs` WHERE `id` = '".intval($id)."'";
}else{
$query ="SELECT * FROM `logs`";
}
$stmt = $this->db->query($query);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}

Теперь ваш класс Logs должен работать правильно.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир