I've been writing about the Presentation, Business and Persistence tiers (and within each of them the MVC or Model, View, Controller or MVC structure) for a JBoss presentation I'm doing this week - but I scarcely expected to find myself putting them to good if unusual use this evening when sorting out an old page on our web site which had - err - laid neglected in a Perl script since before the last site update. How to fix this without re-writing what's actually a very nice piece of Perl ...
I've designated the Perl to be the business layer, and I've added an "Internal" interface type to it as well as the "post" and "get" interface.
In my new-look PHP page, I call up the Perl script through that internal interface passing in parameters as appropriate from the PHP using a shell_exec call. The internal interface returns a result set which I can then integrate in my presentation layer.
Neat - and what could have been a major rewrite was done in an hour. I've always said that the Java principles are great for the larger applications / sites and I'm glad to have had an opportunity to apply them!
(written 2006-04-17, updated 2008-05-10)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Q915 - Object Orientation and General technical topics - Principles of Model - View - Controller [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)
[3624] Why do we need a Model, View, Controller architecture? - (2012-02-25)
[3705] Django Training Courses - UK - (2012-04-23)
[3919] What is a web framework? - (2012-11-10)
[4010] Really Simple Rails - (2013-02-17)
[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)
P221 - Perl on the Web [433] FTP - how to make the right transfers - (2005-09-01)
[493] Running a Perl script within a PHP page - (2005-11-12)
[590] Danny and Donna are getting married - (2006-02-03)
[641] Simple but rugged form handling demo - (2006-03-10)
[662] An unhelpful error message from Apache httpd - (2006-03-30)
[975] Answering ALL the delegate's Perl questions - (2006-12-09)
[1198] From Web to Web 2 - (2007-05-21)
[2551] Perl and the Common Gateway Interface - out of fashion but still very useful? - (2009-12-26)
[3875] Using CGI and Perl to put a simple application online. Sometimes still the best way. - (2012-09-30)
H999 - Additional PHP Material [54] PHP and natural sorting - (2004-09-19)
[239] What and why for the epoch - (2005-03-08)
[320] Ordnance Survey - using a 'Get a map' - (2005-05-22)
[322] More maps - (2005-05-23)
[337] the array returned by preg_match_all - (2005-06-06)
[372] Time calculation in PHP - (2005-07-08)
[468] Stand alone PHP programs - (2005-10-18)
[483] Double Dollars in PHP - (2005-11-02)
[563] Merging pictures using PHP and GD - (2006-01-13)
[603] PHP - setting sort order with an associative array - (2006-02-13)
[665] PHP Image viewing application - (2006-04-01)
[789] Hot answers in PHP - (2006-07-02)
[806] Check your user is human. Have him retype a word in a graphic - (2006-07-17)
[822] PHP - a team member leaves - (2006-08-04)
[839] Reporting on the 10 largest files or 10 top scores - (2006-08-20)
[917] Syntax checking in PHP - (2006-11-07)
[937] Display an image from a MySQL database in a web page via PHP - (2006-11-22)
[1010] Dates, times, clickable diarys in PHP - (2006-12-28)
[1020] Parallel processing in PHP - (2007-01-03)
[1053] Sorting people by name in PHP - (2007-01-26)
[1104] Drawing dynamic graphs in PHP - (2007-03-09)
[1194] Drawing hands on a clock face - PHP - (2007-05-19)
[1270] PHP Standalone - keyboard to screen - (2007-07-18)
[1389] Controlling and labelling Google maps via PHP - (2007-10-13)
[1390] Converting from postal address to latitude / longitude - (2007-10-13)
[1391] Ordnance Survey Grid Reference to Latitude / Longitude - (2007-10-14)
[1451] More PHP sample and demonstration programs - (2007-12-01)
[1485] Copyright and theft of images, bandwidth and members. - (2007-12-26)
[1505] Script to present commonly used images - PHP - (2008-01-13)
[1519] Flipping images on your web page - (2008-01-26)
[1623] PHP Techniques - a workshop - (2008-04-26)
[2073] Extra PHP Examples - (2009-03-09)
[2215] If nothing, make it nothing. - (2009-06-02)
[2684] Exception handling in PHP - (2010-03-18)
[3118] Arrays of arrays - or 2D arrays. How to program tables. - (2011-01-02)
[3210] Catchable fatal error in PHP ... How to catch, and alternative solutions such as JSON - (2011-03-22)
[4655] Image indexer / thumbnail display scripts in PHP - (2016-02-25)
H310 - PHP - Putting it all together [1716] Larger applications in PHP - (2008-07-22)
[1754] Upgrade from PHP 4 to PHP 5 - the TRY issue - (2008-08-15)
[1794] Refactoring - a PHP demo becomes a production page - (2008-09-12)
[1840] Validating Credit Card Numbers - (2008-10-14)
[1962] Index Card System for Game Characters in PHP - (2008-12-27)
[2275] Debugging multipage (session based) PHP applications - (2009-07-09)
[2635] A PHP example that lets your users edit content without HTML knowledge - (2010-02-14)
[2931] Syncronise - software, trains, and buses. Please! - (2010-08-22)
A801 - Web Application Deployment - Overview of J2EE technology
Some other Articles
Testing you Perl / PHP / MySQL / Tcl knowledgeAdding Virtual HostsThe call of natureAre you free on Friday evening?Presentation, Business and Persistence layers in Perl and PHPName Services - telling your LDAP from your DNSA couple of days awayStaying in the countrySupporting users on Linux and UnixIran has enriched uranium ...