19 марта 2024, вторник  

PHPworld.ru - все о программировании на PHP, основы языка PHP, особенности PHP5
PHPworld.ru php php 5 SQLite Статьи Книги Форум PHP Гостевая книга Ссылки по PHP

PHP 5




 

ООП в PHP 5 - клонирование объектов

php 5Итак, в PHP 5 объекты передаются по ссылке. Однако, если же необходимо провести именно копирование объекта, как это делалось в PHP 4, то в PHP 5 придется явно использовать новый метод __clone(). При этом объект копируется со всеми своими методами, свойствами и их значениями:

<?php
     class MyClass{
         var $property;
     } 
     $obj1 = new MyClass;
     $obj1->property = 1;
     $obj2 = clone $obj1;
     echo $obj1->property; // Выводит 1
     echo $obj2->property; // Выводит 1
     $obj2->property = 2;
     echo $obj2->property; // Выводит 2
?>

Следует обратить внимание на то, что к методу __clone() нельзя обратиться непосредственно и для копирования объекта используется ключевое слово clone.

Метод __clone() необязательно описывать в самом классе, однако его явное определение, т.е. перегрузка, позволит изменить значения свойств копируемого объекта:

<?php
     class MyClass{
         var $property;
         function __clone() {
             $this->property = 2; 
         }
     } 
     $obj1 = new MyClass;
     $obj1->property = 1;
     $obj2 = clone $obj1;
     echo $obj1->property; // Выводит 1
     echo $obj2->property; // Выводит 2
?>

Метод __clone() не может принимать никакие аргументы, однако позволяет обратиться к исходному объекту через указатель $this и получаемому в результате копирования объекту через указатель $that. 

Дата публикации: 11.07.04
Последнее обновление: 13.07.04
Просмотров: 42661

Copyright © PHP World - Леонид Лукин, 2004-2008.

Главная PHP World | PHP | PHP 5 | SQLite | Статьи по PHP | Книги по PHP | Ссылки по PHP | CV