The OO model in PHP is very powerful indeed - and much more code is now written using the facilities it offers than was the case a year or two ago. On yesterday's
Object Oriented Programming in PHP course, I wrote a new example that nicely brought together many of the facilities on offer - you can see the full sample code
here.
One very common requirement is to sort an array of objects in PHP, and if you just use the regular
sort function, you'll end up sorting (I think) based on the memory address at which they are held. That is never what you want! Instead - you should use
usort
Here's my example of a call to
usort:
usort($wellhousemanor,array("transact","mvf"));
And that sorts an array of objects in the $wellhousemanor array, using the static member function called
mvf in the class
transact to compare pairs of records. All you (as the application programmer) need do is make the call in this (rather curious, it must be said) way. If you're the programmer writing the class, you simply provide a method of the given name that takes two parameters and return negative if the first object passed should come earlier, positive if the second object passed should come earlier, and zero to indicate that the objects are equally ranked for sorting.
Here's my example comparator:
static function mvf($first,$second) {
if ($first->getvalue() > $second->getvalue()) return 1;
if ($first->getvalue() < $second->getvalue()) return -1;
return 0;
}
Q: I'm a PHP programmer - should I use objects these days?
A: In most cases YES - exceptions are minimum maintainance jobs on older code, and tiny applications where you'll never have more than a few lines of PHP. And even if you're not writing your own objects, chances are that you'll use objects that other people have written and perhaps contributed via something like PEAR.
(written 2008-10-04)
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)
[343] Should I use structured or object oriented? - (2005-06-10)
[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)
[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)
Some other Articles
Which is your best hotel room?FSB - an update.Claverton PumpAutumnSorting objects in PHPIcelandic BadgeMarc Schneider is still having email troubleHolt on holtHotel Guest Surveys