What are the best practices for separating application logic and output logic in PHP?

Separating application logic and output logic in PHP is essential for maintaining clean and maintainable code. One common approach is to use a template engine like Twig to handle the output logic, while keeping the application logic in separate PHP files or classes. This separation allows for easier testing, debugging, and maintenance of the codebase.

```php
// Application logic in a separate PHP file
// application_logic.php
function getSomeData() {
    // Application logic to fetch data
    return $data;
}

// Output logic using Twig template engine
// index.php
require_once 'vendor/autoload.php';

$loader = new Twig_Loader_Filesystem('templates');
$twig = new Twig_Environment($loader);

$data = getSomeData();
echo $twig->render('index.html', ['data' => $data]);
```

In this example, the application logic is contained in the `application_logic.php` file, where the `getSomeData()` function fetches the data. The output logic is handled in the `index.php` file using the Twig template engine to render the `index.html` template with the data retrieved from the application logic. This separation allows for a clean and organized code structure.