Правильно ли я использую класс? Парни, я создал класс отчет. Верно ли создал сам файл 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 '';
В вашем классе 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 должен работать правильно.