clone 关键字用于克隆一个完全一样的对象,__clone() 方法来重写原本的属性和方法。
对象克隆
有的时候我们需要在一个项目里面使用两个或多个一样的对象,如果使用 new 关键字重新创建对象,再赋值上相同的属性,这样做比较烦琐而且也容易出错。PHP 提供了对象克隆功能,可以根据一个对象完全克隆出一个一模一样的对象,而且克隆以后,两个对象互不干扰。
使用关键字 clone 来克隆对象。语法:
$object2 = clone $object;
例子:
<?php
class Person {
private $name;
private $age;
function __construct($name, $age) {
$this->name=$name;
$this->age=$age;
}
function say() {
echo "我的名字叫:".$this->name."<br />";
echo "我的年龄是:".$this->age;
}
}
$p1 = new Person("张三", 20);
$p2 = clone $p1;
$p2->say();
?>
运行例子,输出:
我的名字叫:张三
我的年龄是:20
__clone()
如果想在克隆后改变原对象的内容,需要在类中添加一个特殊的 __clone() 方法来重写原本的属性和方法。__clone() 方法只会在对象被克隆的时候自动调用。
例子:
<?php
class Person {
private $name;
private $age;
function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
function say() {
echo "我的名字叫:".$this->name;
echo " 我的年龄是:".$this->age."<br />";
}
function __clone() {
$this->name = "我是假的".$this->name;
$this->age = 30;
}
}
$p1 = new Person("张三", 20);
$p1->say();
$p2 = clone $p1;
$p2->say();
?>
运行例子,输出:
我的名字叫:张三 我的年龄是:20
我的名字叫:我是假的张三 我的年龄是:30
分享到:
相关推荐
php5 类与对象 个人总结与简单的例子,... PHP 对象克隆 clone 关键字与 __clone() 方法 17. PHP 对象的存储与传输(序列化 serialize 对象) 18. php 设计模式:工厂模式和单例模式 19.对象对象迭代 20 this关键字
介绍php封装的mysqli类,结合实例形式分析了php针对mysqli操作类的定义与使用技巧,掌握满足单例模式的...(3)私有的克隆方法-为了防止在类外通过clone成生另一个对象 (4)公有的静态方法-为了让用户进行实例化对象的操作
介绍了php基于单例模式封装mysql类,结合完整实例形式分析了php使用单例模式封装的mysql类定义与使用...(3)私有的克隆方法-为了防止在类外通过clone成生另一个对象 (4)公有的静态方法-为了让用户进行实例化对象的操作
介绍php封装的mysqli类,结合实例形式分析了php针对mysqli操作类的定义与使用技巧,掌握满足单例... (3)私有的克隆方法-为了防止在类外通过clone成生另一个对象 (4)公有的静态方法-为了让用户进行实例化对象的操作
介绍了php基于单例模式封装mysql类,结合完整实例形式分析了php使用单例模式封装的mysql类... (3)私有的克隆方法-为了防止在类外通过clone成生另一个对象 (4)公有的静态方法-为了让用户进行实例化对象的操作
PHP有一个内置的克隆方法__clone()可以在设计模式中使用,但是不能直接访问,使用clone关键字即可。克隆不会启动构造函数。 二、什么时候使用原型设计模式 如果一个项目要求你创建某个原型对象的多个实例,就可以...
以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用PHP进行Web开发的各个方面的知识和技巧,主要包括开发环境、PHP基础、Web页面交互、文件操作、会话应用、图形图像处理及面向对象等内容。...
以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用PHP进行Web开发的各个方面的知识和技巧,主要包括开发环境、PHP基础、Web页面交互、文件操作、会话应用、图形图像处理及面向对象等内容。...
本文实例讲述了php封装的...(3)私有的克隆方法-为了防止在类外通过clone成生另一个对象 (4)公有的静态方法-为了让用户进行实例化对象的操作 */ class ConnectMysqli{ //私有的属性 private static $dbcon=false;
简单克隆此仓库,并通过命令行运行meff.php文件,将扩展名和完整路径传递给您的Magento根目录。 php meff.php Extension_Name MagentoDir # or if you are in the current working directory php meff.php ...
食人鱼Pac克隆要求Windows XP或以上安装这是您想要的文件: 此处的地图编辑器:关键字词Windows 32 API 2人2人联网C ++ 的OpenGL 国防部促进TCP / UDP 吉特Visual Studio社区先用Dev-C ++,再用WxDev-C ++,再用...