php类之clone 克隆

对象也能被“克隆”

在php5中,对象的传递方式默认为引用传递,如果我们想要在内存中生成两个一样的对象或者创建一个对象的副本,这时可以使用“克隆”。

通过 clone 克隆一个对象

对象的复制是通过关键字 clone 来实现的。用 clone 克隆出来的对象与原对象没有任何关系,它是把原来的对象从当前的位置重新复制了一份,也就是相当于在内存中新开辟了一块空间。通过关键字 clone 可以克隆一个对象,语法格式如下:

$克隆对象名称=clone $原对象名称;

__clone()方法

对象的__clone()方法不能够直接被调用,只有当通过关键字 clone 克隆一个对象时才可以使用该对象调用__clone()方法。当创建对象的一个副本时,php5将会检查__clone()方法是否存在。如果不存在,那 么它就会调用默认的__clone()方法,复制对象的所有属性。如果__clone方法已经定义过,那么__clone()方法就会负责设置新对象的属 性。所以在__clone()方法中,只需要覆盖那些需要更改的属性就可以了。例子如下:

class MyClone{

    public function __clone(){

        echo"对象已被克隆";

    }

}

$objectA=new MyClone();

$objectB=$objectA;  //不调用__clone()方法,没任何输出

$objectC=clone $objectA;  //调用__clone()方法

该程序执行结果为:对象已被克隆

原文地址:https://www.cnblogs.com/cangqinglang/p/10171705.html

时间: 2024-10-06 00:53:37

php类之clone 克隆的相关文章

php类和对象: clone 克隆

对象也能被“克隆” 在php5中,对象的传递方式默认为引用传递,如果我们想要在内存中生成两个一样的对象或者创建一个对象的副本,这时可以使用“克隆”. 通过 clone 克隆一个对象 对象的复制是通过关键字 clone 来实现的.用 clone 克隆出来的对象与原对象没有任何关系,它是把原来的对象从当前的位置重新复制了一份,也就是相当于在内存中新开辟了一块空间.通过关键字 clone 可以克隆一个对象,语法格式如下: $克隆对象名称=clone $原对象名称; __clone()方法 对象的__c

利用Linode面板Clone克隆搬家迁移不同VPS数据及利用IP Swap迁移IP地址

在众多海外VPS服务商中,老蒋个人认为Linode提供的VPS方案和性价比还是比较高的,尤其目前基础1GB方案仅需10美元每月且全部是SSD固态硬盘,无论是流量还是硬盘大小,基本上可以满足我们大部分用户的需求.按照这样的配置架构方案,即便其他便宜的商家也基本上无法企及,且Linode提供24小时的在线客服,任何技术问题,都可以在几分钟之内得到解答. 老蒋在之前的文章中,已经分享了不少Linode相关的文章/教程,鉴于Linode官方自带面板的强大型,还有很多技巧和应用还需要慢慢分享给大家使用.今

Java Object类中的-----------clone()克隆机制

package java_lang_object; public class User implements Cloneable { public Address address; public int age; public String name; public User(int age,String name){ this.age = age; this.name = name; this.address = new Address("广州天河"); } public  User

【java】spring项目中 对entity进行本类间的克隆

方法1: [使用spring自带BeanUtils实现克隆] [要求:需要被克隆的类实现Cloneable接口并且重写clone()方法] >例子: >>实体: package com.agen.orderdiscount.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; i

【git】之clone(克隆)

直接克隆 git clone https://github.com/gyjx/test.git 指定克隆某个分支 git clone -b dev https://github.com/gyjx/test.git

PHP类知识----clone方法上机实验

<?php class mycoach { public function __construct($name,$age) { $this->name = $name; $this->age = $age; } } $cpc = new mycoach("陈培昌",22); $cj = $cpc; var_dump($cj,$cpc); $cj2 = clone $cpc; var_dump($cj2,$cpc); ?> 原文地址:https://www.cnb

Java clone() 浅克隆与深度克隆

内容转自:http://www.blogjava.net/orangelizq/archive/2007/10/17/153573.html 现在Clone已经不是一个新鲜词语了,伴随着“多莉”的产生这个词语确实很“火”过一阵子,在java中也有这么一个概念,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Clone机制是如何工作的?     1. Clone&Copy     假设现在有一个Employee对象,Employee tobby =new Employee

Java中的克隆(CLONE)

解读克隆 编程过程中我们常常遇到如下情况: 假设有一个对象object,在某处又需要一个跟object一样的实例object2,强调的是object和object2是两个独立的实例,只是在 开始的时候,他们是具有相同状态的(属性字段的值都相同),跟同卵双胞胎很相似.遇到这种情况的做法一般是,重新new一个对象object2,将 object的字段值赋予object2,可以说这种方法很土,我们可以使用clone方法克隆出一个跟object一样的object2,很高效. 误区:有人认为直接将对象ob

Object之克隆对象clone 和__clone()函数

在前面的PHP面向对象之对象和引用,"$b=$a"的方式复制对象传递的是对象的地址,而不是传递对象的值(内容),我们可以通过克隆对象来实现对对象的内容和引用的复制 使用传址引用的方式调用对象,实质调用的是同一个对象,有时需要建设立一个对象的副本,改变原来的对象时不希望影响到副本,在PHP中可以根据现在的对象来克隆出一个完全一样的对象,克隆出来的副本和原本两个对象完全独立而互不干扰 在php中使用"clone"关键字来克隆对象 <?php class Perso