After step 4, part 1 - Extracting variables so we can access them directly in the template and simplifying path in url map

From
http://fabien.potencier.org/article/53/create-your-own-framework-on-top-
of-the-symfony2-components-part-4. Note that if you don’t have a
parameter in the query string for ‘hello’, like ‘hello?name=Chris’,
you’ll get an error because the default no longer works.
After step 4, part 2 - Added routing component, started using Composer autoloader, moved routing to its own app.php file

From
http://fabien.potencier.org/article/53/create-your-own-framework-on-top-
of-the-symfony2-components-part-4. There are also a couple examples of
improving performance by dumping a customized URL matcher for PHP or
.htacess that we’re not adding here.
After step 5, part 1 - Added controllers for our pages

Good quote from Fabian: “The controller mission is to generate a
Response based on the information conveyed by the client Request.” This
is from
http://fabien.potencier.org/article/54/create-your-own-framework-on-top-
of-the-symfony2-components-part-5.
After step 5, part 2 - Replacing our app with a new app to calculate when leap years occur.
After step 6, part 1 - Wrapping our controller code in a controller class
After step 6, part 2 - Adding a controller resolver and the HttpKernal component. Updated to use a method in the route definition.
After step 7, part 1 - Started to create a real framework by moving code from front.php into a Framework class.

From
http://fabien.potencier.org/article/56/create-your-own-framework-on-top-
of-the-symfony2-components-part-7. Also added par-0 autoloading for the
framework class.