对象传值|学习笔记

简介: 快速学习对象传值

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第一阶段对象传值】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/711/detail/12665


对象传值

 

内容介绍:

一、对象传值

 

一、对象传值

1、目标

了解 PHP 中对象传值的方式

掌握方式之后可以灵活运用实现传值。

2、概念

对象传值:将保存对象的变量赋值给另外一个变量(一定是变量给变量,对象只有赋值没有传值,对象直接赋值给变量)

·在 PHP 中,对象的传值是引用传递的:即一个对象变量赋值给另外一个变量,两个变量指向同一个对象的内存地址,即只有一个对象。(不会产生新对象)

3、步骤

(1)定义类结构

(2)实例化产生对象,保存在变量中

(3)将保存对象的变量赋值给另外一个变量

4、示例

(1)对象传值就是保存对象的变量赋值给另外一个变量

class saler{} I

$s1=new saler();

$s2 = $s1;

先产生一个类得到一个对象,对象只能通过实例化产生,再把保存对象的变量赋值给另外一个变量,从而产生一个新的保存对象的变量。

代码 07pass.php:

<?Php

#对象传值

class Saler{}

$s1 = new Saler();

$s2 $s1;

var_dump($s1,$s2);

查看一下:

object(Saler)#1 (0){} object(Saler)#1 (0) {}

主体一样都是 Saler ,编号都为1 说明它们没有一个新的变量,本质是一个对象。

(2)对象传值是引用传递,不管对象赋值给多少个变量,内存中只有一个对象

# 证明

var_dump($s1,$s2); # 同一个对象

$s1->name ='saler': # 更改一个变量所保存对象的属性

echo $s2->name; # 输出 Saler

尝试修改另一个对象,如果彼此的修改会影响到对方说明操作的是同一块内存地址。

修改 s1 没有修改s2:

<?Php

#对象传值

class Saler{}

$s1 = new Saler();

$s2 = $s1;

$s1->name: 'Saler';

var_dump($s1,$s2);

结果:

object(Saler)#1(1){["name”]=>string(5)“Saler"}object(Saler)#1(1){[“name”]=>string(5)"Saler}

不管是 s1还是 s2都有了对应的属性,说明一个对象操作在另外一个对象里面也受影响,两个对象本质是一个对象,它们之间引用传递,到引用传递之后,对象不管怎么复制给自己,其他的变量都不会增加,新的变量都不会增加新的对象,可以放心的去传递不会影响到。

5、小结

(1)对象传值方式是引用传值,不论对象如何被赋值给其他变量,始终只有一个对象,能保证内存最优.

(2)对象通过实例化产生,如果赋值一个产生一个,可以产生很多,对象不可控。

相关文章
|
8月前
|
JavaScript
vue事件传值使用 dataset 对象传值
vue事件传值使用 dataset 对象传值
|
XML Java 数据库连接
Mabtis传值方式
Mabtis传值方式
395 0
|
8月前
|
JavaScript
除了对象字面量形式和Vue.createApp方法,还有哪些方式可以注册组件?
除了对象字面量形式和Vue.createApp方法,还有哪些方式可以注册组件?
35 0
|
JavaScript 网络架构
vue传参和接受参数方法
vue传参和接受参数方法
|
JavaScript
Vue——05-02组件的数据、为什么data要使用函数、父组件给子组件传递数据的三种写法、父传子以及传两种以上的值、默认值以及父传子的引用类型
组件的数据、为什么data要使用函数、父组件给子组件传递数据的三种写法、父传子以及传两种以上的值、默认值以及父传子的引用类型
163 0
|
存储 PHP 开发者
参数传值方式|学习笔记
快速学习参数传值方式
参数传值方式|学习笔记
|
JavaScript 开发者 前端开发
组件传值-父组件向子组件传值和 data 与 props 的区别|学习笔记
快速学习组件传值-父组件向子组件传值和 data 与 props 的区别
158 0
组件传值-父组件向子组件传值和 data 与 props 的区别|学习笔记
|
存储 JavaScript
七个例子带你搞懂JS对象中的数据属性与访问器属性
有人会问:对象属性也分类别?!是指函数和变量的不同吗?还是分为可枚举属性或者是不可枚举属性,其实属性分为两个大类,一种为数据属性,一种为访问器属性
130 0
|
PHP 开发者
变量传值| 学习笔记
快速学习变量传值。