Sodapop Introduction

Sodapop was built to provide a simple, go-to framework for developers looking to gain the benefits of a MVC environment without having to impact the way they work. It seeks to pull in the best features of other MVC frameworks (such as Zend, Yii, and CakePHP in PHP, and Rails in Ruby) while not adding too much cruft of its own. It has the following principles:

  • Code should be well-organized; everything should be easily discoverable if one knows the basics of the framework.
  • Boilerplate code is unnecessary. Let computers handle the repetitive stuff, they enjoy it more.
  • Convention over configuration. You shouldn't have to state everything explicitly, but you can override defaults.
  • A framework should get out of the way and not make you change your style.

How it is different

It has several differences from other frameworks.

  • It is themeable: Sodapop lets users separate front-end code (including views, layouts, and static content such as stylesheets and images) into individual theme directories and switch between them using a configuration setting.
  • Model classes don't need to be defined: Sodapop will automatically declare and include model classes if there is a matching database table. For example, if there is a table called users, developers can just type $user = new User(); and start using it without having to declare the class. Of course, if they would like to add more methods or members to the class they can extend the built-in version.
  • Domain-based Configuration: The Sodapop configuration file is segmented by domain. Users can run multiple websites from a single codebase, with different themes for each domain. This is very useful for companies offering hosted solutions for multiple customers.
  • No command-line scripts: Many frameworks have recently moved to using command-line scripts to initialize applications, add new scaffolding code, etc. Sodapop doesn't use these because we feel they lessen a developer's understanding of how a framework functions, and violate our "easy discoverability" principle.

Despite these differences, it should still feel very familiar to users of other frameworks.