我们知道,变量默认总是传值赋值。也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。
举个简单例子:
<?php $a = 'hello world'; $b = $a; $a = 'bey world'; var_dump($a); var_dump($b); ?>
此时的$b = $a,在内存中的存贮大致是这样子的:
但是当一个对象被实例化后,对象的传递并非传值,而是传递该对象的地址。也就是说,不会复制整个对象,因为这样做既耗时又耗内存。
同样举个简单例子:
<?php class Person { public $name; public $age; } $a = new Person(); $b = $a; $c = &$a; $a->name = 'gavin'; $a = null; var_dump($b); var_dump($a); var_dump($c);
执行结果:
object(Person)#1 (2) { ["name"]=> string(5) "gavin" ["age"]=> NULL } NULL NULL
上面例子中变量的操作过程大致如下:
$b = $a; $c =& $a;
当把一个对象实例赋给一个新变量时,新变量会访问同一个实例。
引用赋值(&)意味着新的变量引用了原始变量,换言之,成为其"别名" 或者 "指向"。改动新的变量将影响到原始变量,反之亦然。
$a = null;
也许你会问,既然直接赋值不是复制对象,那如何才能复制对象呢?PHP里克隆复制对象使用clone操作符:
$f = new Person(); $b = clone $f; //创建一个对象副本
小结
通过本文,我们一起分享了在PHP中对象的赋值操作,传递的是对象地址,而不是复制对象。PHP中可以使用clone操作符来复制对象。能力有限,如果大家发现本文有"bug",欢迎不吝赐教,同时如果大家有其他疑问或见解,欢迎一起分享交流。我们共同学习,共同交流,共同进步。
相关推荐
小楼axure 图文教程(十四)页面传值-登录状态和用户名.rp
双色图文详解 电感器及应用电路.双色图文详解 电感器及应用电路.双色图文详解 电感器及应用电路.
在"word操作练习题图文混排01"的资源包中,你将找到一系列练习素材,包括文本、图片以及截图,这些都是帮助你提升这一技能的宝贵材料。 1. 图文框:在Word中,图文框是用于放置和格式化文字、图片或形状的工具。你...
PMF模型的运行操作包括数据输入、基本设置、基本模型运行、运行结果的查看、误差评估和输出文件说明。模型的运行包括输入处理后的数据、设置模型参数、运行模型、评估模型运行结果,并最终通过旋转工具对结果进行...
`char.object.php`可能是用于处理识别到的单个字符或对象的类,可能包含解析OCR返回的坐标和识别结果的方法。这些信息对于后续的文本校正和格式化非常有用。 `config.php`文件则可能包含OCR引擎的配置参数,如API...
《Kafka技术内幕:图文详解Kafka源码设计与实现》是一本深入解析Apache Kafka的专著,旨在帮助读者理解Kafka的核心设计理念、内部机制以及源码实现。这本书结合图文并茂的方式,使得复杂的概念变得更为易懂。同时,...
双色图文详解 电容器及应用电路 双色图文详解 电容器及应用电路 双色图文详解 电容器及应用电路
《LoadRunner监测Linux系统图文详解》 在IT性能测试领域,LoadRunner是一款广泛使用的性能测试工具,能够模拟大量用户并发执行任务,以检测系统在高负载下的表现。本篇文章将详细解析如何使用LoadRunner监测Linux...
PHP 企业微信群机器人发图片或图文链接,内有PHP代码实现 PHP 企业微信群机器人发图片或图文链接,内有PHP代码实现 PHP 企业微信群机器人发图片或图文链接,内有PHP代码实现
开发者需要了解PHP语法、面向对象编程、数据库操作(如MySQL)以及API接口设计。 4. **云打印技术**: 云打印是指通过互联网连接打印机,实现远程打印的一种技术。在这个系统中,云打印可能涉及到将用户上传的文件...
Kafka技术内幕:图文详解Kafka源码设计与实现 PDF 下载 Kafka技术内幕:图文详解Kafka源码设计与实现 PDF 下载
总之,《VC++编程高手图文详解》全面覆盖了VC++编程的各个方面,无论是基础概念还是高级技术,都能提供详尽的解释和实例。通过学习这本书,读者不仅可以熟练掌握VC++编程,还能培养解决问题和分析设计的能力,为成为...
微信图文编辑器php源码带后台,mysql数据库,仿v5微信在线编辑器
PHP根据微信开放文档开发的几个DEMO实例,本人正在做一款自动生成文章,发图文消息给关注的用户,有公众号粉丝的朋友开发好自动赚流量推广
在实际操作中,温度对分离效果有很大影响,因此色谱柱通常安装在精确控温的柱箱中。检测器的种类多样,但功能相同,即在载气流中识别和响应待分离组分。数据处理可以通过传统的带状图记录仪、数字积分仪或计算机数据...
Win7 封装过程图文详解 Win7 封装过程图文详解是指使用 Easy Sysprep v3 封装系统和 EasyDrv5.08 驱动工具智能安装驱动的过程。整个过程可以分为以下几个步骤: 1. 封装前的准备:下载官方原版 Win7 系统,刻成...
CentOS 7 安装 Oracle 11gR2 图文详解 本文将指导读者在 CentOS 7 操作系统上安装 Oracle 11gR2 数据库。本文涵盖了从环境准备到安装 Oracle 数据库的所有步骤。 一、环境准备 在安装 Oracle 数据库之前,需要...
Liunx Minio 图文详解安装成服务启动是指在 Linux 操作系统中安装和配置 Minio 对象存储服务器的过程。Minio 是一个基于分布式存储系统的对象存储解决方案,提供高性能、可扩展性强的存储服务。 知识点1:Minio ...
图文详解定制安装ubuntu