The only working way I could currently consider valid, and which works from top to bottom as it should be, would to to extend Zend\Uri\Http and adding a merge() method to it. Then every route would first set up its own Uri object, call the child route, and merge the result with its own Uri object.

This would mean that we may end up with e.g. 500 instead of 100 Uri objects per page call, as well as doing 400 expensive merge operations on every page call. This would *clearly* be the worst thing we could do.