SilverStripe: MVC framework and CMS

If you're looking to build a website with backend functionality, there are numerous systems to choose from. Most fit into the category of being either a framework, or a CMS (content management system).

Examples of CMSs include Wordpress, Drupal and Joomla. Examples of frameworks include Rails, Djano, and Laravel. The difference between these systems is not always clearly defined. Drupal, for example, is often considered to be both a CMS and a Framework.

Content management systems provide an out-of-the-box set of tools for content creators and editors to work with. In contrast, frameworks tend to offer little out-of-the-box, but provide flexibility for developers.

SilverStripe aims to be the middle-ground. It provides an MVC framework for developers, but also a tightly coupled and responsive CMS for content editors.

In a SilverStripe project, the /code directory contains the models and controllers, while views are contained in the /theme directory.

Like most modern frameworks, SilverStripe abstracts away the database layer so you don't have to write pure SQL queries. SilverStripe uses an ORM, and one of its main features is lazy loading, where queries are not run until the data is acted on. This allows developers to pass around queries without worrying about the effect of them being executed. It also ensures that the database has all data necessary to run the most efficient query.

 

Coming from a Drupal/Wordpress background, I can certainly understand the appeal of SilverStripe's MVC architecture for developers.

While the newest version of the framework seems stable and well documented, the CMS presented some issues. Released at the end of 2017, there are still some minor bugs, and the end-user documentation has not been updated for the latest version.

I found that the lack of learning resources presents a challenge. The most recent book I could find was published in 2011, and since then the system has undergone major changes.

If you want to learn SilverStripe, be prepared to spend plenty of time playing around with it.

And remember to ?flush your caches often.