What are the best practices for separating HTML output and PHP logic to improve code readability in PHP forms?

Separating HTML output and PHP logic can greatly improve code readability in PHP forms by making it easier to distinguish between the presentation layer and the backend logic. One common practice is to use a templating system like PHP's built-in `include` function or a more advanced templating engine like Twig. This allows you to keep your HTML markup in separate files, making it easier to maintain and update without cluttering your PHP code.

// Example of separating HTML output and PHP logic using include function

// PHP logic
$data = [
    'name' => 'John Doe',
    'email' => 'john.doe@example.com',
    'message' => 'Hello, world!'
];

// HTML output
include 'form_template.php';
```

In the `form_template.php` file, you can have your HTML markup with placeholders for the dynamic data:

```html
<form>
    <label for="name">Name:</label>
    <input type="text" name="name" value="<?php echo $data['name']; ?>">
    
    <label for="email">Email:</label>
    <input type="email" name="email" value="<?php echo $data['email']; ?>">
    
    <label for="message">Message:</label>
    <textarea name="message"><?php echo $data['message']; ?></textarea>
</form>