An object of type
stdClass can be used in PHP 5 as an alternative to an associative array. An associative array has a number of named properties that can be set and read and so does an object. To start you off, simply cast an associative array into an object:
$info = array("question" => "Life", "answer" => 42);
$ic = (object) $info;
print $ic->answer . "\n";
print $ic->question . "\n";
which gives me:
42
Life
If you want to see what that looks like inside:
$cando = get_object_vars($ic);
var_dump($cando);
which gives me:
array(2) {
["question"]=>
string(4) "Life"
["answer"]=>
int(42)
}
But one of the great beauties of stdClass is that you can extend it and add character and behaviour; here's a class to which values can be assigned as well as directly written in (and - remember your OO training - you shouldn't be accessing variables directly in user code!):
class thing extends stdClass {
public function assign($key, $value = false) {
$this->$key = $value;
}
public function getpairs() {
$wehave = get_object_vars($this);
return $wehave;
}
}
And let's now make some used of that:
$story = new thing();
$story->assign("by","Hitchhiker");
$story->author = "Douglas Adams";
print $story->by . "\n";
print $story->author . "\n";
print "-----\n";
$about = $story->getpairs();
foreach (array_keys($about) as $k) {
print ("$k - $about[$k]\n");
}
And here's the resultant output:
Hitchhiker
Douglas Adams
-----
by - Hitchhiker
author - Douglas Adams
Extensions to stdClass are commonly used by frameworks such as Zend and you'll find direct variable access and additional specialist methods such as the ones I've shown you above in user code. The source of the above example is
[here] for you to refer to.
(written 2013-04-02, updated 2013-04-06)
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)
[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)
[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
Seamless, integrated IT - we have a long way to go!CodeIgniter - an excellent PHP framework with an easy start pointCurl and curling from PHPThe highs and lows of customer service - CheltenhamstdClass in PHP - using an object rather than an associative arrayAn overpractical test of our backup strategy!Using web services to access you data - JSON and RESTful servicesOn Salford Docks - mind over matter? Frameworks - learning through exploring and understanding data sourcesThe PHP course this week is in... Salford