What are the potential pitfalls of creating a new database connection for each instance of a class in PHP?

Creating a new database connection for each instance of a class in PHP can lead to inefficiency and resource wastage, as it can result in multiple connections being opened simultaneously. To solve this issue, it is recommended to use a single shared database connection across all instances of the class by implementing a database connection as a singleton.

class Database {
    private static $instance = null;
    private $connection;

    private function __construct() {
        $this->connection = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password');
    }

    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new Database();
        }
        return self::$instance;
    }

    public function getConnection() {
        return $this->connection;
    }
}

class MyClass {
    private $db;

    public function __construct() {
        $this->db = Database::getInstance();
    }

    public function fetchData() {
        $connection = $this->db->getConnection();
        // Use the connection to fetch data
    }
}