A free and open-source book on ZF3 for beginners

5.12. Summary

In this chapter, we've learned about routing. Routing is used for mapping HTTP request to controller's action method. There are several route types (Literal, Segment, Regex, Hostname, Scheme, Method etc.). Each route type uses different URL parts (and, possibly, other data from HTTP request) to compare the URL with the specified route template. We also learned how to write custom route class if the capabilities of standard route types are not sufficient.

The main task of a route class is to return a route match containing the set of parameters, by which a controller and action can be determined. An opposite task a route class allows to generate a URL by parameters. This feature is widely used in view layer of the application for generating hyperlinks.

Route types can be combined in a nested tree with the help of TreeRouteStack router, or organized in a chain with SimpleRouteStack router. These two routers allow to define arbitrarily complex rules.

Routing configuration is stored in module's configuration file under the router key. Each module exposes its own routing rules, which are merged with other modules' configuration upon application start up.