What are the best practices for handling form data in PHP controllers to ensure code security and maintainability?

When handling form data in PHP controllers, it is crucial to sanitize and validate user input to prevent security vulnerabilities such as SQL injection and cross-site scripting attacks. To ensure maintainability, separate the logic for handling form data into separate functions or classes and use proper error handling techniques.

// Example code snippet for handling form data in PHP controllers

// Sanitize and validate user input
$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

// Separate logic for handling form data into functions or classes
function handleFormData($username, $email) {
    // Perform necessary operations with sanitized and validated data
}

// Implement proper error handling techniques
try {
    handleFormData($username, $email);
} catch (Exception $e) {
    // Handle any exceptions or errors
    echo "An error occurred: " . $e->getMessage();
}