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 相关文章推荐
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
用PHP中的 == 运算符进行字符串比较
Nov 26 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
php跨站攻击实例分析
Oct 28 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
Mar 01 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
php实现获取近几日、月时间示例
Jul 06 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
3种平台下安装php4经验点滴
2006/10/09 PHP
php自定义hash函数实例
2015/05/05 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
Angular实现form自动布局
2016/01/28 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
Python 调用PIL库失败的解决方法
2019/01/08 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
财务学生的职业生涯发展
2014/02/11 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
同学会主持词
2014/03/18 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
四风问题查摆材料
2014/08/25 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
孔庙导游词
2015/02/04 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
HTML中的表单元素介绍
2022/02/28 HTML / CSS