What are the differences between using a template system like Smarty versus creating a custom template caching system?

Using a template system like Smarty allows for easier separation of business logic and presentation, as well as built-in caching functionality to improve performance. On the other hand, creating a custom template caching system gives more control over the caching process and can be tailored specifically to the needs of the application.

// Example using Smarty template system
require_once('smarty/Smarty.class.php');

$smarty = new Smarty;
$smarty->caching = true;
$smarty->cache_lifetime = 3600;

$smarty->assign('name', 'John Doe');
$smarty->display('index.tpl');

// Example creating a custom template caching system
function custom_template_cache($template_name, $data) {
    $cache_file = 'cache/' . md5($template_name) . '.html';

    if (!file_exists($cache_file) || filemtime($cache_file) < time() - 3600) {
        ob_start();
        extract($data);
        include($template_name);
        $content = ob_get_clean();
        file_put_contents($cache_file, $content);
    }

    include($cache_file);
}

// Usage
$data = ['name' => 'John Doe'];
custom_template_cache('index.php', $data);