For me, and I know this differs greatly per coder, I use an all-in-one solution I wrote a while back. It works like this:
Your Apache has a rewrite rule directing all requests through a PHP file. That file takes the request URI and checks for templates/actions/static files and sees which files match the request (ie knowing which part of the URL references the file, and what part is made up from parameters to be passed to the file). Once it has the files, it caches the list (so on the next access of the page, the engine knows exactly what to load and how to load it). This engine includes the templating code, and it also includes any PHP scripts called from the server, so by default all PHP scripts running under the engine have access to the templating toolkit. It also works with databases, whatever - if it's in the engine, it's available to all pages within.
Sure, there are performance arguments to this approach, but by using a cache, the most disk-intensive actions are prevented after the first request.