php的对象传值与引用传值代码实例讲解


Posted in PHP onFebruary 26, 2021

变量赋值与对象赋值对比

<?php 
  // 声明一个变量并赋值 
  $a = 1; 
  // 将数据类型的值 赋值 给一个变量 
  $b = $a; 

  // 修改$a的值 
  $a = 2; 

  // $a和$b是两个独立的内存空间修改其中一个另一个不受影响
  echo $b; // 1 

  class Person{
    public $name;
    public $age;

  }

  // 将对象类型的数据 赋值 给一个变量
  $p = new Person;

  // 通过对属性修改值,来确定面向对象中 对象的传值方式
  $p->name = 'jesse';

  // 若是成功修改值,则是引用传值 
  echo $p->name; // jesse

?>

案例解释:

在这里通过变量的赋值方式与对象的赋值方式方式相对比,代码中 $b = a ; 的 赋 值 方 式 为 “ 拷 贝 赋 值 ” , 故 在 修 改 其 源 值 ( a; 的赋值方式为“拷贝赋值”,故在修改其源值( a;的赋值方式为“拷贝赋值”,故在修改其源值(a的值)的情况下, b 的 值 不 受 影 响 。 b的值不受影响。 b的值不受影响。a与$b的内存关系图如下:

php的对象传值与引用传值代码实例讲解

而代码 p − > n a m e = ′ j e s s e ′ ; 将 数 据 类 型 赋 值 给 p->name = 'jesse';将数据类型赋值给 p−>name=′jesse′;将数据类型赋值给p变量,通过$p修改对象内部的值成功,对比变量的传值方式,证明这是引用传值,内存关系图如下:

php的对象传值与引用传值代码实例讲解

<?php 
  class Person
  {
    public $name;
    public $age;

    // 将对象类型的数据 赋值 给一个变量
    $p = new Person;

    // 通过对属性修改值,来确定面向对象中 对象的传值方式
    $p->name = 'jesse';

    // 将对象赋予另一变量
    $m = $p;

    // 另一变量修改属性值
    $m->name = 'Marry';

    // 输出源变量 赋值变量访问内部属性的结果
    echo $p->name, $m->name;
  }

?>

$m = p ; 代 码 为 本 篇 文 章 的 最 “ 点 睛 ” 的 代 码 , 等 号 右 边 为 是 一 个 对 象 , 左 边 是 一 个 变 量 , 那 么 犀 利 的 问 题 来 了 , p;代码为本篇文章的最“点睛”的代码,等号右边为是一个对象,左边是一个变量,那么犀利的问题来了, p;代码为本篇文章的最“点睛”的代码,等号右边为是一个对象,左边是一个变量,那么犀利的问题来了,m是将对象拷贝一份?还是按引用传递呢?该代码内存关系如下:

php的对象传值与引用传值代码实例讲解

所以,最后两个对象的属性值均被修改为Marry!!!

那按引用传值会是怎么个情况?

<?php 
  class Person
  {
    public $name; 
    public $age; 
  } 

  // 将对象类型的数据 赋值 给一个变量 
  $p = new Person; 

  // 通过对属性修改值,来确定面向对象中 对象的传值方式
  $p->name = 'jesse';

  // 将对象赋予另一变量
  $m = &$p;

  // 另一变量修改属性值
  $m->name = 'Marry';

  // 输出源变量 赋值变量访问内部属性的结果
  echo $p->name, $m->name;

?>

php的对象传值与引用传值代码实例讲解

到此这篇关于php的对象传值与引用传值代码实例讲解的文章就介绍到这了,更多相关php的对象传值与引用传值内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
PHP Google的translate API代码
Dec 10 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 PHP
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
在Yii框架中使用PHP模板引擎Twig的例子
Jun 13 PHP
PHP获取时间排除周六、周日的两个方法
Jun 30 PHP
PHP自定义函数实现格式化秒的方法
Sep 14 PHP
php 二维数组快速排序算法的实现代码
Oct 17 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 PHP
PHP CURL实现模拟登陆并上传文件操作示例
Jan 02 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 #PHP
PHP内存溢出优化代码详解
Feb 26 #PHP
php自动加载代码实例详解
Feb 26 #PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 #PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 #PHP
php中get_object_vars()在数组的实例用法
Feb 22 #PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
Feb 22 #PHP
You might like
PHP自动更新新闻DIY
2006/10/09 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
php去除HTML标签实例
2013/11/06 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
Python中zip()函数用法实例教程
2014/07/31 Python
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
python中的装饰器详解
2015/04/13 Python
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
python实现rsa加密实例详解
2017/07/19 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
解决Python使用列表副本的问题
2019/12/19 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
大学生个人推荐信范文
2013/11/25 职场文书
大学生怎样进行自我评价
2013/12/07 职场文书
触摸春天教学反思
2014/02/03 职场文书
初中同学聚会感言
2014/02/11 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
群众路线领导对照材料
2014/08/23 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python