There's no "one size fits all" answer to "what's the best way for me to meet this application requirement", and if you're writing code there will be a number of different approached / methodologies you can use. I'm going to have a look at some of the possible choices and relate it to PHP today ... it's rather on my mind as I'm teaching an
Object Oriented PHP course.
If your application is tiny, you can just write a single block of code. Let's face it, if you've just got a regular HTML web page on which you want to include today's date, a simple PHP print(date( ... is all you need. If the application is not tiny (but remains small), you would be well advised to split out the logically separate elements into
functions. Taken to the extreme, you're looking at structured programming design where everything's in a function and each function performs a single logical task.
As applications grow, structured programming gets unwieldy too and you'll be best advised to use an
Object Oriented approach. That's a great way to compartmentalise your code, allowing for easy extensability and code testing unit by unit.
As applications grow still further, from medium size to "large" or "huge", another trend may become apparent. While the development team is a tight little community, all the members know and share knowledge and will only call up pieces of code through appropriate ways - what I describe as a Trusted Object Oriented system, where the programmers are trusted to know what they're doing. But grow the thing massively, and there will be times that team members call up a piece of code in a way that the team leader would really rather they didn't. At this stage, you'll want to be using what I call a "Policed Object Oriented" system where externally visible components are marked with words such as "private", "public" and "protected".
PHP in various versions supports single code blocks, trusted OO and policed OO:
Application size | Methodology | Web language |
---|
Small | Not OO | PHP - any version |
Medium | Trusted OO | PHP4 or PHP5 |
Large | Policed OO | PHP5 |
Bear in mind that if you want a policeman at the end of each street to protect you from the villains, you're going to have to pay for it in your taxes. The same thing applies with OO in PHP - a policed OO system may slightly extend development time, but you may feel that it's worth it. Certainly, when you're doing your initial coding practise you should use the trusted approach so that you're not hauled over the coals for every tiny error while you learn.
(written 2005-06-10, updated 2006-06-05)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
H108 - Objects in PHP [67] Object Oriented Programming in PHP - (2004-09-29)
[124] PHP v Java - (2004-11-20)
[205] PHP5 lets you say no - (2005-02-07)
[421] Don't repeat code - use loops or functions - (2005-08-21)
[485] North, Norther and Northest - PHP 5 Objects - (2005-11-04)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[720] Planning a hotel refurb - an example of a Gant chart in PHP - (2006-05-14)
[836] Build on what you already have with OO - (2006-08-17)
[1027] Cue the music, I'm happy. - (2007-01-09)
[1153] Object Oriented Model - a summary of changes from PHP4 to PHP5 - (2007-04-18)
[1217] What are factory and singleton classes? - (2007-06-04)
[1535] OO PHP demonstration - comparing objects and more - (2008-02-08)
[1682] Accounts in PHP - an OO demo - (2008-06-19)
[1819] Calling base class constructors - (2008-10-03)
[1820] Sorting objects in PHP - (2008-10-04)
[1925] Introduction to Object Oriented Programming - (2008-12-06)
[2160] PHP - getclass v instanceof - (2009-05-07)
[2169] When should I use OO techniques? - (2009-05-11)
[2171] Cleaning up redundant objects - (2009-05-11)
[2172] PHP4 v PHP5 - Object Model Difference - (2009-05-11)
[2380] Object Oriented programming - a practical design example - (2009-08-27)
[2434] Abstract classes, Interfaces, PHP and Java - (2009-10-03)
[2435] Serialization - storing and reloading objects - (2009-10-04)
[2632] Shipping a test harness with your class in PHP - (2010-02-12)
[2641] Object Oriented Programming in PHP - (2010-02-19)
[2680] Static class members in PHP - a documented example - (2010-03-16)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2741] What is a factory? - (2010-04-26)
[2774] PHP - Object Oriented Design in use - (2010-05-21)
[2921] Does copying a variable duplicate the contents? - (2010-08-14)
[2922] Getting the OO design write - with PHP a example - (2010-08-14)
[3142] Private and Public - and things between - (2011-01-22)
[3210] Catchable fatal error in PHP ... How to catch, and alternative solutions such as JSON - (2011-03-22)
[3211] Computer Graphics in PHP - World (incoming data) to Pixel (screen) conversion - (2011-03-24)
[3607] Designing your application - using UML techniques - (2012-02-11)
[3608] Design Patterns - what are they? Why use them? - (2012-02-12)
[3609] How do classes relate to each other? Associated Classes - (2012-02-12)
[3840] Autoload in PHP - (2012-08-17)
[3841] Copying, duplicating, cloning an object in PHP - (2012-08-18)
[3843] Caching Design Patterns - (2012-08-20)
[3953] Objects in PHP - Revision - (2012-12-16)
[4057] stdClass in PHP - using an object rather than an associative array - (2013-04-02)
[4073] Learning about Object Orientation in PHP - a new set of examples - (2013-04-28)
[4356] Object factories in C++, Python, PHP and Perl - (2014-12-19)
[4366] Changing what operators do on objects - a comparison across different programming languages - (2014-12-26)
[4626] Singleton design pattern - examples and uses - (2016-01-20)
[4627] Caching results in an object for efficiency - avoiding re-calculation - (2016-01-20)
[4628] Associative objects - one object within another. - (2016-01-20)
G906 - Well House Consultants - Programming Standards [148] Programming in isolation - (2004-12-11)
[272] More to programming than just programming - (2005-04-08)
[356] Sudoku helper or sudoku cheat - (2005-06-23)
[945] Code quality counts - (2006-11-26)
[1596] Selling curry to the chinese takeaway - (2008-03-31)
[1679] PHP - Sanitised application principles for security and useability - (2008-06-16)
[1852] Perl and Blackberries - (2008-10-23)
[2322] Looking for a practical standards course - (2009-08-05)
[2363] Alpaca Case or Camel Case - (2009-08-16)
[2364] Getting it right from the start - new programmers - (2009-08-17)
[3685] Programming Standards in Lua - (2012-04-06)
A401 - Web Application Deployment - Structured Code and Object Orientation [1717] Q - Should I use Perl or Python? - (2008-07-23)
[3085] Object Oriented Programming for Structured Programmers - conversion training - (2010-12-14)
Some other Articles
Frightening and from-friend viruses and spamsNo Smoking PubsSpotting a denial of service attackWalk in BathShould I use structured or object oriented?The evening after the courseHappy Birthday, PHPCode and code maintainance efficiencyPassing information into and out of PHP functionsOO techniques are hard to teach