The spatie/menu package provides a fluent interface to build menus of any size in your PHP application. If you're building your app with Laravel, the spatie/laravel-menu provides some extra treats. All classes provide a human-readable, fluent interface (no array configuration). Additionally, you can opt for a more verbose and flexible syntax, or for convenience methods that cover most use cases. You can programmatically add html classes and attributes to any item in the menu, or to the menu itself. You can add id, so you can easily target some of these elements with CSS or JS. The Laravel version of the menu package adds some extras like convenience methods for generating URLs and macros.