Skip to content
codeguy edited this page Oct 2, 2010 · 155 revisions

Slim Framework RoadMap Working Draft

Created September 25, 2010

This is the official Slim framework roadmap working draft. This is a living document that may very well change in the future. Phase 1 will be completed first, followed by Phase 2 and Phase 3.

About the Slim PHP Framework

Slim is a RESTful micro web framework for PHP 5. I needed a way to create a simple PHP web service with minimum fuss. There are plenty of respectable PHP frameworks, but many of them are too robust for my needs. So I created Slim, a simple DSL for creating PHP web services.

What are Slim's goals?

  1. Remain light-weight, simple, and easy to use for both amateur programmers and professional programmers
  2. Always favor clean syntax and simple solutions instead of messy syntax and complex solutions
  3. Respect the 80/20 rule: satisfy 80% of common use cases rather than muddle the code-base for 20% of edge use cases
  4. Support PHP 5 and above

Phase 1

  • Write initial unit test coverage for primary Slim classes Done for now. The Slim, Request, and Response classes are still in flux. I will gradually achieve 100% coverage soon as these classes become stable
  • Write Slim class loader
  • Establish Slim version numbering system Slim will be considered "alpha" software until Phase 1, Phase 2, and Phase 3 are complete. When all three Phases are complete, Slim will be considered "stable" and at that point I will label Slim as "1.0". Rest assured, it will not take that long to reach 1.0 status.
  • Migrate Slim documentation to the GitHub Wiki

Phase 2

  • Add HTTP Caching (LastModified and ETag header support)
  • Write example custom View classes for Twig, Smarty, Mustache, etc.
  • Improve Slim cookie management (send cookies with Response, not when set)See Slim::Session in the Docs
  • Add redirect helper method... Slim::redirect( '/path' [, status] );
  • Add pass helper method... Slim::pass();
  • Add urlFor helper method... Slim::urlFor('route-name'); This is currently in the Router object, but will add to Slim as a helper to shorten necessary code.
  • Instantiate default View in Slim::__construct so we can set individual View data before calling Slim::render().
  • Improve error reporting and exception handling. Add try/catch block to Slim::run() to catch exceptions and return 500 response.

Phase 3

  • Content Negotiation (prioritize resource extension; followed by HTTP Accept header preferences)
  • Implement Slim::authenticate using strategy pattern (a strategy will return true, false, or NULL)
  • Add Production and Development modes
  • Add mode-specific application-wide settings
  • Add user-agent condition to Routes
  • Add application-wide route conditions

Clone this wiki locally