Is it best practice to use static methods in PHP database classes, considering the limitations it may pose for multiple database connections?

Using static methods in PHP database classes can limit the flexibility of handling multiple database connections since static methods are tied to the class itself rather than an instance of the class. To overcome this limitation, it is recommended to use instance methods in database classes, allowing for different instances to manage separate database connections.

class Database {
    private $connection;

    public function __construct($host, $username, $password, $database) {
        $this->connection = new mysqli($host, $username, $password, $database);
    }

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

// Example usage
$db1 = new Database('localhost', 'username1', 'password1', 'database1');
$result1 = $db1->query('SELECT * FROM table1');

$db2 = new Database('localhost', 'username2', 'password2', 'database2');
$result2 = $db2->query('SELECT * FROM table2');