-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Slim 2 Road Map
Created September 25, 2010
Updated July 31, 2012
This is the official Slim framework roadmap working draft. This is a living document that may very well change in the future.
- Remain light-weight, simple, and easy to use for both amateur programmers and professional programmers
- Always favor clean syntax and simple solutions instead of messy syntax and complex solutions
- Respect the 80/20 rule: satisfy 80% of common use cases rather than muddle the code-base for 20% of edge use cases
- Support PHP 5 and above
Slim uses the same Git workflow as described at http://nvie.com/posts/a-successful-git-branching-model/. The master
branch will always represent the latest production-ready point release. The develop
branch will contain the latest features pending the next point release; the develop
branch is not guaranteed to be stable, but it will more than likely work since new features are developed locally on separate Git branches and only merged into the develop
branch when thought to be stable.
These are not assigned to a specific version, but they will likely be included sometime in the future. These are not assigned to a specific upcoming version release because they are under active discussion to determine the best approach for implementation. Do not submit pull requests for these features until you have discussed implementation plans with Josh Lockhart (the project creator/maintainer).
- Issue separate request from within the app https://github.com/codeguy/Slim/issues/121/
- Parse
Accept
,Accept-Charset
,Accept-Encoding
,Accept-Language
request headers - Introduce official plugin architecture
- Allow custom router dispatchers
- Stream file, data, or process output to HTTP client
- Drop legacy 5.2 support
- Introduce PHP namespaces
- Introduce PSR-1 support
- Full inline documentation audit
- Reduce global footprint
- Add route wildcard parameters
- Let
Slim_Router
handle route dispatching - Let
Slim_Middleware_Flash
be iterable - Prevent
E_NOTICE
if session already started - Optimize
Slim_Route::matches
code
- Let Slim always invoke
slim.after
hook, even after halt, etc. - Let
Slim_Route
inject custom parameter values - Let
Slim_Router
return current route in middleware - Fix duplicate output when output buffering turned on
- Improve unit test coverage
- Fix potential view data and view variable naming collisions
- Let
Slim_Router
use internal iteration - Let
Slim_Router
expose current route withgetCurrentRoute
method - Let Slim
applyHook
method pass argument(s) to each registered callback - Let
Slim_Http_Request
parse request body only if body is a string and URL encoded - Fix cookie parsing when multiple cookies exist with same name and signature
- Fix
Slim_Middleware_SessionCookie
file locking for high-traffic Slim applications - Rename
Slim_LogFileWriter
class toSlim_LogWriter
- Add optional log file writer (rotated daily, weekly, or yearly) to Slim-Extras*
- Fix flash message bug with session middleware
- Add support for
X-Forwarded-For
header inSlim_Http_Request::getIp
- Add improved encryption with more unpredictable encryption IV in
Slim_Http_Util
- Add DELETE request body parsing in
Slim_Http_Request::delete
- Fix host name and port parsing in
Slim_Http_Request
- Fix HTTP header parsing in
Slim_Environment
, trim whitespace from values - Fix logging and pass log level as second argument to custom log writers'
write
method - Fix request body parsing for multipart HTTP requests in
Slim_Http_Request
- Fix URI parsing regression for Windows users in
Slim_Environment
- Replace logo.png in repo with base64-encoded image tag
- Abstract server environment parsing out of Slim_Request.
- Use abstracted server environment parsing to enable mock requests for testing.
- Introduce Slim application middleware stack, similar to Rack.
- Clean up Slim run loop in favor of external middleware.
- Bump system requirements to PHP >= 5.2
- Ensure all new releases adhere to major.minor.release version scheme
- Parse JSON, XML, CSV HTTP request body using middleware
- Add setting to toggle response HTTP version between 1.1 and 1.0
- Add support for mapping routes to one or more HTTP methods without redefining routes
- Add support for HTTP OPTIONS method
- Return 405 response status if resource exists but for different HTTP request method(s)
- Pass caught Exception into custom Slim Error handler as first and only argument
- Delay
set_error_handler
andset_exception_handler
until after Slim instantiation
- Delay custom error handler until Slim is ready to handle errors
- Force session serialization before HTTP response is sent to the client
See upgrade notes at http://www.slimframework.com/documentation/upgrade_to_150.
- Convert Slim to instance model rather than a Singleton model. This affects:
- App initialization
- Logging
- Isolated Error and Exception handlers
- Application names
- Improved unit test coverage
- Sessions
- CookieStore session handler (signed; encrypted if
mcrypt
available) - Flash messaging
- CookieStore session handler (signed; encrypted if
- Application modes & configuration
- Improved Hook and Filter system
- Route middleware
- Restructure unit tests
- Move custom views to separate repository
Upgrading from 1.2 to 1.3 should be a straight-forward process. Just replace your Slim/
directory with the latest version. The only potential gotchas you should watch out for are:
PHP $_SESSION
data is now stored in signed, encrypted Cookies using Slim's own Session handler. If your $_SESSION
data will be larger than 4Kb, you should revert to PHP's default Session handler like this:
Slim::init(array(
'session.handler' => null
));
Sessions are started automatically by Slim. You do not need to call session_start()
. Session IDs are regenerated on each request for additional security Removed due to issues with many simultaneous AJAX or asset requests.
To invoke a hook in 1.3 (unlike prior versions), you now call Slim::applyHook('name.of.hook')
. Assigning callables to a hook remains the same with Slim::hook('name.of.hook', $callable)
.
To keep the core repository as light-weight as possible, all custom Views have moved to a separate repository at:
https://github.com/codeguy/Slim-Extras
This release marks the most important changes to-date within the Slim PHP 5 micro framework. All class names are updated so that Slim can use the industry-standard class autoloader (see link below). The class names in this release are final and will not be changed again in the future.
- REST improvements
- Improved Request class
- Abstract URI parsing and handling from Request
- New class auto loader (see here)
- Work with or without web server URL rewriting
- Full inline documentation review
- New default template for fresh application install
- Convert to 4-space indents instead of using TABs
- Support HTTP HEAD requests
- New, extensible application logging
- View interface updates
- Plugin hook architecture
- Application-wide route conditions
- Optional route segments with default values
- Initial test coverage for primary classes
- Slim class loader
- Establish version numbering system
- Move Getting Started and Documentation to GitHub Wiki
- HTTP caching (ETag and LastModified)
- Cookie management
- Route redirects
- Route passing
- Route naming and urlFor helper
- Instantiate View in Slim::init()
- Improve Exception and Error handling
- Add "Contributing to Slim" Wiki page with expectations, style guidelines, etc.
- Write example custom View classes for Twig, Smarty, Mustache, etc.
- Add Slim app settings
- Add Slim app logging
- Improve test coverage for Request and Response
- Ensure inline documentation for Slim classes is complete