When you write web applications, there are many features you'll need which mirror features other people have needed too. Now - there's nothing to stop you writing your own code (maybe in Ruby, Python or Perl) including these features ... but wouldn't it be better to use the feature set that someone else has already written?
A web framework is both the upper layer - the hanger - on which you can hang the code that does differ for your application, and the lower layer - routines that you call to perform common fucntions. Very often, web frameworks use standard classes of objects too, so that you can say "I want one of THOSE, but it has the following differences / extras".
Where the base language is Ruby, the usual framework you'll find is Rails. For Python, Django is very much the most popular at present. With Perl, there are a number - Catalyst, Dancer, Mason, Solstice and Mojolicious for example. For more, see
[here] on Wikipedia. PHP is slightly different - but only slightly so - in that a few more of the elements (such as the session handling stuff) is built into the base programming language. The biggest name with PHP is the Zend Framework.
So - what might you find in a Framework?
• A Scaffolding into which you can build your application
• Form helpers
• A model system (in most of them) to let you hold and manipulate databases and easily convert them to and from objects
• Session handlers (in base langauge with PHP)
• Templating systems
• Easy support for model - view - controller architecture
• A Utility application to let you admin / update databases via the web
• Router to map URLs to particular controller / action logic.
We'll introduce you to
Django or to
Rails at the end of your Python or Ruby course. With Perl, where there's no single market leader, please ask and we can work through a framework with you.
Illustration from last week's PHP course - yes, I've been playing with colour. The coathanger is a historic one, currently on display in
the museum (written 2012-11-10, updated 2012-11-17)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y306 - Python - The Django web framework [1745] Moodle, Drupal, Django (and Rails) - (2008-08-08)
[3136] A framework with python - Django - first steps - (2011-01-17)
[3138] Django - adding your own views, and then templating your views. - (2011-01-18)
[3139] Steering our Python courses towards wxPython, SQLite and Django - (2011-01-19)
[3140] Django - separating the HTML from the view / model - (2011-01-20)
[3624] Why do we need a Model, View, Controller architecture? - (2012-02-25)
[3633] Nesting Templates in Django - (2012-03-02)
[3634] Defining database relations in your Django model - (2012-03-02)
[3639] Demonstration of a form using Django - (2012-03-04)
[3640] Sessions (Shopping Carts) in Django - the Python Web Framework - (2012-03-05)
[3698] How to stop forms on other sites submitting to your scripts - (2012-04-15)
[3705] Django Training Courses - UK - (2012-04-23)
[4013] Web Frameworks - nested templates - (2013-02-22)
[4095] Django - first steps - Updated - (2013-05-19)
R202 - Ruby on Rails [1050] The HTML++ Metalanguage - (2007-01-22)
[1302] Ruby, Ruby, Ruby. Rails, Rails, Rails. - (2007-08-13)
[1375] Python v Ruby - (2007-10-02)
[2605] Ruby on Rails - a sample application to teach you how - (2010-01-30)
[2607] Answers on Ruby on Rails - (2010-01-30)
[2609] Scope of variables - important to Ruby on Rails - (2010-01-31)
[3756] Ruby on Rails - how it flows, and where the files go - (2012-06-08)
[3772] Hello World - Ruby on Rails - a checklist of each step - (2012-06-22)
[3777] Multiple views in a single appication - sharing common parts of the template - Ruby on Rails - (2012-06-23)
[3778] Providing a form to allow the user to add data to the model - Ruby on Rails - (2012-06-23)
[3779] Adding validation to form entries and sticky fields - Ruby on Rails - (2012-06-23)
[3780] Ruby of Rails - cleanly displaying model data in the view - (2012-06-23)
[4010] Really Simple Rails - (2013-02-17)
Q915 - Object Orientation and General technical topics - Principles of Model - View - Controller [687] Presentation, Business and Persistence layers in Perl and PHP - (2006-04-17)
[2199] Improving the structure of your early PHP programs - (2009-05-25)
[2612] The Model, View, Controller architecture (MVC) - what, why and how. - (2010-02-01)
[3237] Using functions to keep look and feel apart from calculations - simple C example - (2011-04-09)
[3454] Your PHP website - how to factor and refactor to reduce growing pains - (2011-09-24)
[4066] MVC and Frameworks - a lesson from first principles in PHP - (2013-04-19)
[4114] Teaching CodeIgniter - MVC and PHP - (2013-06-12)
[4320] An example of Model-View-Controller techniques in a Perl / CGI script - (2014-11-20)
[4391] Refactoring Perl applications to give them a rosy future - (2015-01-11)
[4527] Hello Flask world / Python web micro framework - (2015-10-11)
[4641] Using an MVC structure - even without a formal framework - (2016-02-07)
[4691] Real life PHP application using our course training MVC example - (2016-06-05)
Some other Articles
35 minutes is only a slight delay on our railway serviceTwerp - A person regarded as insignificant and contemptibleOn rememberance, on war, and on preventing the war cycleChallenge for a photographerWhat is a web framework?Multiple page web applications - maintaining state - PHPBODMAS - the order a computer evaluates arithmetic expressionsPHP variables - dynamically typed. What does that mean?How does PHP work? While, for, foreach or something else to loop.