suchen
Heimphp教程php手册php克隆对象clone的使用方法

php克隆对象clone的使用方法

Jun 06, 2016 pm 07:55 PM
clonephp使用方法克隆对象进入

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 在PHP5中,对象间的赋值被默认视为地址引用,例如: ?php $objB = $objA; ? 针对上面这句代码,我们看一下内存分配结构: 从上面示意图中我们可以看出,定义$objA对象时,系统会为其分配一块内存(①

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  在PHP5中,对象间的赋值被默认视为地址引用,例如:

  

  $objB = $objA;

  ?>

  针对上面这句代码,我们看一下内存分配结构:

  从上面示意图中我们可以看出,定义$objA对象时,系统会为其分配一块内存(①箭头),当$objB被赋值$objA时,系统没有再分配内存,而是将$objB的引用直接指向了$objA内存,实际上这两个对象指向的是同一块内存,这时,当我们修改$objB的值时,$objA的值也跟着变化了,这就使得如果我们需要两个同样的、相对独立的对象就需要分别定义,操作麻烦,而且程序的可读行定也不好。为了解决这个问题,PHP为我们提供了一种可以克隆对象的方法clone,在PHP手册里对clone方法介绍的比较简单,下面UncleToo用实例为大家介绍一下clone方法的使用。

  示例一:

  

  class subclass{

  private $name;

  private $age;

  public function __construct(){

  $this->name = '张三';

  $this->age = '30';

  }

  public function __clone(){

  $this->name = '李四';

  $this->age = '29';

  }

  }

  class myclass{

  public $p1;

  public $p2;

  public function __construct(){

  }

  public function __clone(){

  $this->p1 = clone $this->p1;

  }

  }

  $obj = new myclass();

  $obj->p1 = new subclass();

  $obj->p2 = new subclass();

  $obj2 = clone $obj;

  echo '

';
<p>  echo '这是obj<br>';</p>
<p>  var_dump($obj);</p>
<p>  echo '-----------------------';</p>
<p>  echo '<br>这是obj2<br>';</p>
<p>  var_dump($obj2);</p>
<p>  echo '</p>
';

  ?>

  输出:

  这是objobject(myclass)#1 (2) {

  ["p1"]=>

  object(subclass)#2 (2) {

  ["name":"subclass":private]=>

  string(4) "张三"

  ["age":"subclass":private]=>

  string(2) "30"

  }

  ["p2"]=>

  object(subclass)#3 (2) {

  ["name":"subclass":private]=>

  string(4) "张三"

  ["age":"subclass":private]=>

  string(2) "30"

  }

  }

  -----------------------这是obj2object(myclass)#4 (2) {

  ["p1"]=>

  object(subclass)#5 (2) {

  ["name":"subclass":private]=>

  string(4) "李四"

  ["age":"subclass":private]=>

  string(2) "29"

  }

  ["p2"]=>

  object(subclass)#3 (2) {

  ["name":"subclass":private]=>

  string(4) "张三"

  ["age":"subclass":private]=>

  string(2) "30"

  }

  }

  可以看到,$obj2 clone $obj,$obj->p1 clone $obj->p1,执行了 __clone()方法。而在__clone方法中,对p1的name与 age属性进行修改,因此p1的name与age 发生变化。而p2因为没有执行clone()方法,所以新复制出来的$obj2->p2的属性与 $obj->p2一样。

[1] [2] 

php克隆对象clone的使用方法

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool