Related Links : Search Engine Optimization | | Search Engine Marketing | Online Marketing | Freelance Programmer| SEO Thailand | SEO Expert | SEO services | PHP Programmer Thailand | SEO Tutorial | What is SEO |

  Home Our SEO Services SEO Expert Consultant Php Programmer Scripts| Email : sachin {at} jainsachin {dot} com

PHP | Object cloning | Manual | Tutorial | Help

SEO Services



Website Programming in PHP / MYSQL



Friends


    Object cloning

    Object cloning

    Creating a copy of an object with fully replicated properties is not always the wanted behavior. A good example of the need for copy constructors, is if you have an object which represents a GTK window and the object holds the resource of this GTK window, when you create a duplicate you might want to create a new window with the same properties and have the new object hold the resource of the new window. Another example is if your object holds a reference to another object which it uses and when you replicate the parent object you want to create a new instance of this other object so that the replica has its own separate copy.

    An object copy is created by using the clone keyword (which calls the object's __clone() method if possible). An object's __clone() method cannot be called directly.

    $copy_of_object = clone $object;
    

    When an object is cloned, PHP 5 will perform a shallow copy of all of the object's properties. Any properties that are references to other variables, will remain references. If a __clone() method is defined, then the newly created object's __clone() method will be called, to allow any necessary properties that need to be changed.

    Example #1 Cloning an object

    <?php
    class SubObject
    {
        static 
    $instances 0;
        public 
    $instance;

        public function 
    __construct() {
            
    $this->instance = ++self::$instances;
        }

        public function 
    __clone() {
            
    $this->instance = ++self::$instances;
        }
    }

    class 
    MyCloneable
    {
        public 
    $object1;
        public 
    $object2;

        function 
    __clone()
        {
            
    // Force a copy of this->object, otherwise
            // it will point to same object.
            
    $this->object1 = clone $this->object1;
        }
    }

    $obj = new MyCloneable();

    $obj->object1 = new SubObject();
    $obj->object2 = new SubObject();

    $obj2 = clone $obj;


    print(
    "Original Object:\n");
    print_r($obj);

    print(
    "Cloned Object:\n");
    print_r($obj2);

    ?>

    The above example will output:

    Original Object:
    MyCloneable Object
    (
        [object1] => SubObject Object
            (
                [instance] => 1
            )
    
        [object2] => SubObject Object
            (
                [instance] => 2
            )
    
    )
    Cloned Object:
    MyCloneable Object
    (
        [object1] => SubObject Object
            (
                [instance] => 3
            )
    
        [object2] => SubObject Object
            (
                [instance] => 2
            )
    
    )
    

    SEO Tutorial / Articles





    Php / Mysql Tutorial



    Articles



      Portfolio


      SEO by Jainsachin