Является ли продление занятий хорошей практикой?
У меня есть соединение PDO в моем классе базы данных, и недавно я использовал это как расширение для других классов, т.е.class Users extends Database
это позволяет мне всегда поддерживать соединение с базой данных без необходимости иметь функцию в моем классе Users.
Однако кто-то указал, что я не должен делать это как плохую практику, почему именно эта плохая практика? И как я могу подключиться к моему классу базы данных в моем пользовательском классе без расширения?
В настоящее время у меня есть вызов к базе данных внутри моегоviewall()
функция, которую я пытался положить в__construct()
функция однако настаивала на наличии параметров
Я пробовал приведенный ниже код, однако я получаю сообщение об ошибке следующим образом:
Fatal error: Call to undefined method Database::prepare() in E:\xampp\htdocs\attendance\class.Register.php on line 13
Любые идеи о том, как я могу зайти в свою базу данных?
Это мой код:
class.Connect.php
<?php
// Database connection PDO
class Database {
public function __construct() {
// Connection information
$host = 'localhost';
$dbname = 'attendance';
$user = 'root';
$pass = '';
// Attempt DB connection
try
{
$this->pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//echo 'Successfully connected to the database!';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function __destruct()
{
// Disconnect from DB
$this->pdo = null;
//echo 'Successfully disconnected from the database!';
}
}
?>
class.Register.php
<?php
require 'class.Connect.php';
class Register {
public function viewall() {
$pdo = new Database();
$stmt = $pdo->prepare('SELECT * FROM users');
$stmt->execute();
$stmt->fetch();
}
}
$run = new Register();
$run->viewall();
?>