php -- 魔术方法 之 对象克隆 : __clone()
产生对象的方法:
1、从类产生对象。new,通过new去堆区开辟一块内存空间
2、从对象产生对象。clone,通过关键字clone,将一个对象完整的复制一份,新开辟一块内存空间,将复制的结果存放到该内存里面
语法:新对象(变量) = clone 老对象(变量)
对象克隆:__clone()
当一个对象被clone的时候,被克隆的对象会自动调用__clone()方法,克隆方法不走构造方法
<?php
//对象克隆
class Person{
//属性
public $name;
private $age;
//静态属性
public static $counts = 0;
//方法
public function __construct($name,$age){
$this->name = $name;
$this->age = $age;
//计数
self::$counts++;
}
public function setAge($age){
$this->age = $age;
}
public function getAge(){
return $this->age;
}
//克隆魔术方法
public function __clone(){
//计数
self::$counts++;
//使用对象
var_dump($this);
}
}
echo '<pre>';
//实例化
$person = new Person('周芷若',15);
var_dump($person);
//克隆对象
$person1 = clone $person;
var_dump($person1);
//修改对象
$person1->name = '张无忌';
var_dump($person1);
//输出对象
echo Person::$counts;
php -- 魔术方法 之 对象克隆 : __clone()的更多相关文章
- php -- 魔术方法 之 对象输出 : __toString()
对象输出:__toString() 当一个对象被当做字符串进行输出时(echo,print),会调用__toString()方法 <?php //输出对象 class Person{ //属性 ...
- PHP魔术方法小结.md
说明 魔术方法就是在特定场景下不需要调用而自动执行的方法.因为有魔术方法,所以我们的类可以写得很灵活~ __construct #构造方法,在类被实例化时自动调用,一般用于初始化操作; __destr ...
- OOP的魔术方法
1.构造函数:__construct(): 构造函数是类中的一个特殊函数,当我们使用new关键字实例化对象时,相当于调用了类的构造函数. function __construct($name){ $t ...
- PHP 的魔术方法及其应用
PHP中将所有__(两个下划线)开头的类方法作为魔术方法,这方法之所以称为魔术方法是因为其实现的功能就如变魔术一样感觉很神奇.在特定的事件下触发,这真的很酷. **__construct()** 这个 ...
- PHP魔术方法11种
1.构造函数:__construct(): 构造函数是类中的一个特殊函数,当我们使用new关键字实例化对象时,相当于调用了类的构造函数. function __construct($name){ $t ...
- 【代码总结】PHP面向对象之常见的关键字和魔术方法
一.关键字的使用 1.final关键字 只能用来修饰类 和 成员方法 不能修饰成员属性 被final修饰的类不能被继承 用final修饰的成员方法 不能被子类覆盖(重写) <?php // f ...
- PHP 魔术方法 __clone __toString(五)
__clone() - 当对象克隆的时候自动加载此方法 __toString() - 当对象需要echo打印输出的时候自动加载此方法 __clone() <?php class example{ ...
- PHP面向对象魔术方法之__clone函数
l 基本介绍 : 当我们需要将一个对象完全的赋值一份, 保证两个对象的属性和属性值一样,但是他们的数据库空间独立,则可以使用对象克隆. <?php header('content-type:te ...
- PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload
1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...
随机推荐
- it-tidalwave-semantic-aux-1.0.13.jar下载
今天来给大家分一下一下自己认为还是挺不错的jar包下载网址,it-tidalwave-semantic-aux-1.0.13.jar,作为java开发人员可能时时刻刻都在跟jar包打交道,即使这会用不 ...
- Failed to initialize storage module: user 的解决方式
网上提供了一种解决方法就是在session_start()前把session的存储方式改为files,即加入以下一句代码 if (ini_get('session.save_handler') !== ...
- 利用Lucene把文本的字体格式进行改动,然后输出到一个新的文件里
这里书中写的是charactorProcess(File file, String destFile) 这里被我改成.(String file, String destFIle) 一个代表现有的文件 ...
- Android OpenGL 开发
2013-06-30 Android OpenGL 开发 Android提供OpenGL包,专门用于3D的加速和渲染等. OpenGL, Open Graphics Library, 是一个专业的图形 ...
- 【LeetCode】97. Interleaving String
Interleaving String Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. Fo ...
- freemarker,*.ftl文件在eclipse中正确的打开方式
解决方式一:下载eclipse相关的freemarker插件 解决方式二:本文重点介绍的,原生解决方式,方法特点无需下载插件,和eclipse编辑html和jsp文件一模一样 步骤: 1:window ...
- 关于python 中的 sys.argv 的使用方法
sys.argv是获取在cmd运行python文件的时候输入的命令行参数,呈现的数据结构是列表的格式 1.用pacharm时运行时的结果是: 输出结果: 2.当我在cmd中输入指令 debu ...
- 转:Mosquitto配置----日志设置
1.mosquitto的日志输出方式简介 mosquitto是一个纯C的代码,它的日志输出支持若干中日志输出方式,通过修改配置项:log_dest即可完成对各种日志输出类型的切换,常见的日志输出类型有 ...
- centos7 配置PPTP、L2TP、IPSec服务
首先,推荐跑下面的脚本: https://github.com/BoizZ/PPTP-L2TP-IPSec-VPN-auto-installation-script-for-CentOS-7 这个脚本 ...
- nodejs 的好基友:pm2
安装:npm install pm2 -g #全局安装pm2 查看版本:pm2 -v 自动重启: pm2 start hello.js --watch 查看列表:pm2 list 查看日志: pm2 ...