- 浏览: 138547 次
- 性别:
- 来自: 北京
文章分类
最新评论
1。
PHP5中定义了一个__clone()将建立一个与原来的对象拥有相同属性和方法的对象。如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法。
__clone()可以没有参数,它自动包含$this和$that两个指针。
$this 指向复本
$that指向原本
2。
如果是类里声明了新类
<?php // 没有这个,$obj 就是引用,有了才是互相独立的两个,亲自试一下看看
class ConcretePrototype{
public function __construct() {
$this->id = 1;
$this->obj = new StdClass();
$this->obj->name = 'dashu';
}
public function myclone() {
return clone $this;
}
private function __clone() {
$this->obj = clone $this->obj;
}
}
$p = new ConcretePrototype();
$q = $p->myclone();
var_dump($p, $q);
$q->id = 2;
//改变$q的obj的属性,$p的相应属性不变化
$q->obj->name = 'xiayi';
var_dump($p, $q);
发表评论
-
gogs
2017-09-25 19:55 521gogs 安装 1. 下载二进制安装包 2. 新建gi ... -
修改 最大执行时间
2016-12-26 11:05 446//修改最大执行时间 ini_set("max ... -
mac 下安装yaf
2016-12-02 15:16 261.wget http://pecl.php.net/get ... -
laravel 自定义 检查 session 数据是否存在
2016-03-03 18:05 774// vendor/laravel/framework/s ... -
laravel 的redis 删除问题
2015-12-07 20:14 1645团队遇到一个laravel的redis问题:登录退出之后, ... -
正则匹配字符串中的汉字,过滤其他字符
2014-06-13 10:40 0preg_match("/[\x80-\xff]{ ... -
zend framwork - view 模板调用
2012-12-24 12:14 727自定义模板文件 $this->_helper-> ... -
中英文混排的串的占位
2012-12-13 16:30 768一个汉字 两个占位符 $str=‘中文a字1符‘; ... -
zend framework 一些记录
2012-12-11 11:04 6831. zend 调试 sql ... -
ip正则匹配 - php
2012-12-05 16:21 873preg_match_all ("#(\d{1,3} ... -
php-fpm 重启
2012-11-11 21:43 698master进程可以理解以下信号 INT, TERM 立刻终 ... -
php汉字匹配
2012-11-04 15:39 606$name = "/[\x{4e00}- ... -
[转]汉字 與 UNICODE 互相轉換
2011-08-22 10:20 996$str = '我'; /* 將 '我' 轉換成 '25 ... -
pathinfo 模式需要开启 php配置文件一个参数
2011-07-14 14:12 1634pathinfo 模式 需要 php.ini 开启下面这个参数 ... -
smarty 中英文截取
2011-03-14 10:34 781<?php function smarty_modif ... -
日期和unix时间戳的互相转换
2011-02-23 11:15 1550竟然忘记了,记下来,看你还能忘 (完整的 年月日时分秒 ... -
重构-旧表导入新表数据
2010-12-17 11:34 723// 对应字段 key-新,value-旧 $fields ... -
正则过滤替换示例备份
2010-11-12 16:34 766$parr4 = "\x80-\xff&qu ... -
分页函数
2010-11-02 11:18 661////实现分页显示 /* $pageCount 记录总数 ... -
获得url信息
2010-09-22 17:12 7503,http://www.biuuu.com/index.ph ...
相关推荐
在PHP中,对象的克隆可以通过使用`clone`关键字实现,而PHP的对象克隆分为浅克隆和深克隆两种。 浅克隆只是复制对象中的非对象和非资源类型的数据,如果对象中包含其他对象类型的属性,则复制的是这些属性的引用。...
PHP4面向对象功能一个很大的缺点,是将对象视为另一种数据类型,这使得很多常见的OOP方法无法使用,如设计模式。这些方法依赖于将对象作为引用传递给其他类方法,而不是作为值传递,而按值传递却是PHP的默认做法。...
当使用 `clone` 关键字复制一个对象时,系统会创建一个新的对象实例,通常被称为浅拷贝,这意味着原始对象的所有属性都会被复制到新对象中。但是,`__clone()` 方法允许开发者在克隆过程中进行自定义操作,例如修改...
本篇文章将深入探讨PHP对象的几个核心概念,包括对象的创建、传递、复制以及`__clone()`方法的使用。 首先,我们来看对象的传递。在PHP中,对象是通过引用传递的,但这里的"引用"并不完全等同于其他编程语言中的...
使用`clone`关键字可以复制一个对象,但通常需要重写`__clone()`方法来处理一些特殊情况,比如重置对象状态或创建新实例的唯一标识符。 **示例**: ```php class Person { private $id; function __construct($...
PHP 对象克隆 `clone` 关键字与 `__clone()` 方法 `clone` 关键字用于创建对象的副本。`__clone()` 方法在对象被克隆时自动调用。 ```php class CloneExample { public $property; public function __clone() ...
在PHP中,`clone`关键字用于复制一个对象,创建其副本。这个副本与原对象有相同的属性和方法,但它们是独立的,修改副本不会影响原始对象。克隆常用于需要多个相似但不完全相同对象的场景,比如在数据库操作中,先...
12. 克隆(Cloning)允许创建一个对象的副本,保持原有对象的不变,使用`clone`关键字实现。 13. `__call`处理调用不存在的方法,可以捕获并处理错误,提供额外的功能。 14. 自动加载类(Autoloading)可以避免在...
总结,PHP面向对象程序设计中,对象的生成主要包括通过`new`关键字实例化、使用`clone`复制对象、以及利用序列化和反序列化进行对象的存储和恢复。此外,了解和应用工厂模式及单例模式能进一步提升代码的灵活性和...
通过`clone`关键字可以复制对象,创建一个新对象,但它保留了原始对象的所有属性。 #### 19. `__call`处理调用错误 `__call()`方法在尝试调用不存在的方法时被调用,可以用来处理未定义方法的调用。 #### 20. ...
如果需要创建一个独立的对象副本,可以使用**深拷贝**,这通常通过`clone`关键字实现。`clone $obj;`会创建一个新的对象,其属性值与原始对象相同,但不会共享引用,从而确保了独立性。 **克隆**是创建一个完全独立...
`clone`关键字用于复制对象,但可以重写`__clone()`方法来执行额外的初始化操作。 #### 19. __call处理调用错误 `__call()`方法用于处理对象上调用未定义或私有的方法的情况。 #### 20. 自动加载类 通过实现`__...
通过`clone`关键字可以复制一个对象,同时创建一个新的实例。 #### 19. `__call` 处理调用错误 `__call()`方法在尝试调用不存在的方法时自动调用,允许程序员自定义处理逻辑。 #### 20. 自动加载类 通过实现`__...
7. 克隆对象:在PHP中,可以使用clone关键字来创建对象的一个新实例。克隆通常用于复制对象的属性到新的实例。 8. 自动加载类:PHP提供了自动加载功能,允许在需要对象时自动加载类文件,这可以通过魔术方法__...
- **克隆**:使用`clone`关键字创建对象的副本,保持原有的引用关系。 - **序列化**:将对象转换为字符串,便于存储或传输。使用`serialize()`方法进行序列化,`unserialize()`进行反序列化。 **9. 异常处理** PHP...
但是,如果类中包含引用类型的属性,如数组或对象,克隆后的对象将共享这些引用,除非使用深拷贝或在`__clone()`魔术方法中显式复制这些属性。 例如: ```php class Product { public $name; public $options; ...
- **克隆对象**:通过`clone`关键字,可以创建一个现有对象的副本,这个副本与原对象有相同的属性和方法,但它们在内存中是独立的,修改副本不会影响原对象。 通过这些基本概念,PHP开发者可以构建出更加灵活、可...