How can encapsulating the database object and initializing it for each call improve the functionality of a PHP class like the SQLitedatabaseManager?

Encapsulating the database object and initializing it for each call can improve the functionality of a PHP class like SQLitedatabaseManager by ensuring that each database operation is performed on a separate instance of the database connection. This helps in preventing potential issues with concurrent operations and ensures better isolation of database transactions.

class SQLitedatabaseManager {
    private $db;

    public function __construct() {
        $this->db = new SQLite3('database.db');
    }

    public function query($sql) {
        $result = $this->db->query($sql);
        return $result;
    }

    public function close() {
        $this->db->close();
    }
}