You are here: Re: copy of object is a reference in PHP5 « PHP Programming Language « IT news, forums, messages
Re: copy of object is a reference in PHP5

Posted by JustinCarmony on 10/25/07 18:05

On Oct 25, 11:50 am, grou...@reenie.org wrote:
> Can someone please explain the results below
> We switched to PHP 5
> if I make a copy of an object, and then change the variable inside the
> object the change is reflected in the copy.
>
> Either the copy is a reference to the object or the variable inside
> the object is a static variable, I'm not sure what is going on, but It
> doesn't seem like it should be doing that. Is that because of a
> setting on the server or something ?
>
> <?
>
> $label=new myObj();
> $label->settext('the text');
>
> $copy=$label;
> print_r($copy);
> $label->settext('different text');
> print_r($copy);
>
> class myObj{
> var $text;
> function settext($text){
> $this->text=$text;
> }
>
> }
>
> ?>
> results:
> myObj Object
> (
> [text] => the text
> )
> myObj Object
> (
> [text] => different text
> )

All objects in PHP 5, if I'm not mistaken, are always passed by
reference. Example:
<?php

class MyClass
{
public $myVar;

function __construct()
{
$this->myVar = 1;
}
}

$class1 = new MyClass();

$class2 = $class1;

$class1->myVar = 2;

echo $class2->myVar; // Outputs 2

?>

If you want to make a copy of an object, so its a new object and not a
reference is to use the clone keyword like this:

<?

class MyClass
{
public $myVar;

function __construct()
{
$this->myVar = 1;
}
}

$class1 = new MyClass();

$class2 = clone $class1;

$class1->myVar = 2;

echo $class2->myVar;

?>

You can also explicitly code what is to happen when an object is
cloned by using the __clone() class function. You can read more here:
http://us3.php.net/manual/en/language.oop5.cloning.php

Carmony

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация