データベース クラスに 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();
?>