Small class to manage config data
I swear I've seen this approach somewhere before, I'll have to see if I can't find that link again. Anyways, a couple of drawbacks of this approach is lack of portability and lack of familiarity. Portability meaning no one can move that code without also taking that class with it. Familiarity meaning not well known. Though I do have to admit, I would love to see PHP natively adopt an xpath navigation style for arrays. Would make life so much easier.

I would steer clear of using method names that are similar to PHP's reserved words. In other words get() would be better as fetch() or query() or something similar. Same for set() and exists(). This helps avoid confusion. The only time "get" or "set" is generally used is when defining a specific getter or setter such as getPath() or setPath(). _engine() is also oddly named, would expect _parse() or _evaluate() or something similar. But this is all stylistic.

The only "real" criticism I have for this bit of code is that occasionally you neglect your braces. These are always important. Please remember them.

if ($this-&gt;_useCache &amp;&amp; isset($this-&gt;_cache[$section]))
    return $this-&gt;_cache[$section];


The only improvement I can suggest is to abstract your caching to a different class in case you ever decide to change it.

Have you thought about creating relative pathing support? In other words, using your example, you could get the same results by using just "//date3"? The previous project I was thinking about did this and I was quite impressed. If there was more than a single match it would return a set of results. It also knew only to look one level deep relative to the array passed to it.

Overall, very impressive though. Sorry I couldn't add more to it.