How can debugging techniques be used to identify issues related to resource handling in PHP classes?

Issue: Resource handling issues in PHP classes can often lead to memory leaks or inefficient use of resources. Debugging techniques such as using tools like Xdebug or implementing proper error handling can help identify and resolve these issues.

// Example code snippet demonstrating proper resource handling in a PHP class

class DatabaseConnection {
    private $connection;

    public function __construct($host, $username, $password, $database) {
        $this->connection = mysqli_connect($host, $username, $password, $database);
        
        if (!$this->connection) {
            throw new Exception("Failed to connect to database: " . mysqli_connect_error());
        }
    }

    public function query($sql) {
        $result = mysqli_query($this->connection, $sql);
        
        if (!$result) {
            throw new Exception("Error executing query: " . mysqli_error($this->connection));
        }
        
        return $result;
    }

    public function __destruct() {
        mysqli_close($this->connection);
    }
}

// Example usage of the DatabaseConnection class
try {
    $db = new DatabaseConnection("localhost", "username", "password", "database");
    $result = $db->query("SELECT * FROM table");
    
    // Process query result
    
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}