Training, Open Source Programming Languages

This is page http://www.wellho.net/mouth/3841_Cop ... n-PHP.html

Our email: info@wellho.net • Phone: 01144 1225 708225

Copying, duplicating, cloning an object in PHP

If you want to copy an object, how do you do it?

Typically, you can just assign the object to a new variable - in PHP, for example:

  $demo = new thing("Stick of Celery");
  $showme = $demo;


but you need to be careful, because that assigns a second name to the same object. If you then run a method on the object by one name, you'll alter the object as it would be under the second name too. Let me show you:

  $showme->set("and zalt");
  print $demo->get();
  print $showme->get();


and I get

  Stick of Celery and zalt
  Stick of Celery and zalt


In practise, this type of copying is usually what you want to do and in scenarios where you don't need to duplicate the internals of the object, it's also very efficient. However, there are times where you want to duplicate the contents of the object so you end up with two identical objects, and you can do this using the clone function that's provided in PHP. Here's how you call it:

  $yummy = clone ($demo);

and when I then change one of my objects:

  $yummy->set("and vinegar");
  print $demo->get();
  print $yummy->get();


I get:

  Stick of Celery and chips
  Stick of Celery and chips and vinegar


in other words I now have two different objects.

The full source code of this example is [here] on our web site, and the topic is covered in our Obejct Oriented Programming in PHP course.

Beware that in PHP 4 - now an old version of PHP that's becoming quite rare - the assignment of an obeject worked just like a clone. This change (which broke a few programs) makes the current (PHP5) version more efficient and also 'correct' from a computer scientist's viewpoint. It's also the original reason for the version number change from "4" to "5".
(written 2012-08-18, updated 2012-08-19)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
H108 - Objects in PHP
  [4073] Learning about Object Orientation in PHP - a new set of examples - (2013-04-28)
  [4057] stdClass in PHP - using an object rather than an associative array - (2013-04-02)
  [3953] Objects in PHP - Revision - (2012-12-16)
  [3843] Caching Design Patterns - (2012-08-20)
  [3840] Autoload in PHP - (2012-08-17)
  [3609] How do classes relate to each other? Associated Classes - (2012-02-12)
  [3608] Design Patterns - what are they? Why use them? - (2012-02-12)
  [3607] Designing your application - using UML techniques - (2012-02-11)
  [3211] Computer Graphics in PHP - World (incoming data) to Pixel (screen) conversion - (2011-03-24)
  [3210] Catchable fatal error in PHP ... How to catch, and alternative solutions such as JSON - (2011-03-22)
  [3142] Private and Public - and things between - (2011-01-22)
  [2922] Getting the OO design write - with PHP a example - (2010-08-14)
  [2921] Does copying a variable duplicate the contents? - (2010-08-14)
  [2774] PHP - Object Oriented Design in use - (2010-05-21)
  [2741] What is a factory? - (2010-04-26)
  [2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
  [2680] Static class members in PHP - a documented example - (2010-03-16)
  [2641] Object Oriented Programming in PHP - (2010-02-19)
  [2632] Shipping a test harness with your class in PHP - (2010-02-12)
  [2435] Serialization - storing and reloading objects - (2009-10-04)
  [2434] Abstract classes, Interfaces, PHP and Java - (2009-10-03)
  [2380] Object Oriented programming - a practical design example - (2009-08-27)
  [2172] PHP4 v PHP5 - Object Model Difference - (2009-05-11)
  [2171] Cleaning up redundant objects - (2009-05-11)
  [2169] When should I use OO techniques? - (2009-05-11)
  [2160] PHP - getclass v instanceof - (2009-05-07)
  [1925] Introduction to Object Oriented Programming - (2008-12-06)
  [1820] Sorting objects in PHP - (2008-10-04)
  [1819] Calling base class constructors - (2008-10-03)
  [1682] Accounts in PHP - an OO demo - (2008-06-19)
  [1535] OO PHP demonstration - comparing objects and more - (2008-02-08)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1153] Object Oriented Model - a summary of changes from PHP4 to PHP5 - (2007-04-18)
  [1027] Cue the music, I'm happy. - (2007-01-09)
  [836] Build on what you already have with OO - (2006-08-17)
  [720] Planning a hotel refurb - an example of a Gant chart in PHP - (2006-05-14)
  [656] Think about your design even if you don't use full UML - (2006-03-24)
  [485] North, Norther and Northest - PHP 5 Objects - (2005-11-04)
  [421] Don't repeat code - use loops or functions - (2005-08-21)
  [343] Should I use structured or object oriented? - (2005-06-10)
  [205] PHP5 lets you say no - (2005-02-07)
  [124] PHP v Java - (2004-11-20)
  [67] Object Oriented Programming in PHP - (2004-09-29)


Back to
Autoload in PHP
Previous and next
or
Horse's mouth home
Forward to
Relax at Well House Manor - gardens, fountain, hotel
Some other Articles
Good cause giving - getting the charity beggars off the street
Rooms ready for guests - each time, every time, thanks to good system design
Relax at Well House Manor - gardens, fountain, hotel
Copying, duplicating, cloning an object in PHP
Spraying data from one incoming to series of outgoing files in Perl
Guest review - Well House Manor, Melksham
Evening behind Melksham Spa
In the garden at Well House Manor
4343 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

© WELL HOUSE CONSULTANTS LTD., 2014: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 899360 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/3841_Cop ... n-PHP.html • PAGE BUILT: Thu Sep 18 15:30:25 2014 • BUILD SYSTEM: WomanWithCat