首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >类成员引用到PHP中的另一个对象

类成员引用到PHP中的另一个对象
EN

Stack Overflow用户
提问于 2016-11-08 14:25:29
回答 1查看 1.2K关注 0票数 4

首先是代码,然后是问题:

代码语言:javascript
运行
AI代码解释
复制
class MyArray
{
    private $arrayRef;

    function __construct(&$array){
        $this->arrayRef = $array;
    }

    function addElement($newElement){
        $this->arrayRef[] = $newElement;
    }

    function print(){
        print_r($this->arrayRef);
    }
}

$array = ['first', 'second'];
$arrayObject = new MyArray($array);
$arrayObject->addElement('third');

print_r($array); // prints array containing 2 elements
echo '<br/>';
$arrayObject->print(); // prints array containing 3 elements

类成员$arrayRef,在本例中,它不作为对构造函数中提供的另一个数组的引用。构造函数中的参数是通过引用传递的,但我猜这不会使成员$arrayRef也成为对该数组的引用。

为什么它不像那样工作,以及如何使它工作?

如果您仍然不明白我的意思:第一个print_r打印数组包含2个元素,甚至认为它可能包含3个元素。当我通过addElement()将第三个元素传递给$arrayObject时,我还希望将它添加到传递给类的构造函数的$array中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-08 14:37:36

答案其实很简单。是的,您通过&$array通过引用传递数组,但是当将数组赋值/复制到成员变量时,此引用将丢失。为了保持引用,您可以使用=&操作符如下

代码语言:javascript
运行
AI代码解释
复制
$this->arrayRef =& $array;

看到它在这把小提琴中工作。您可以在这个问题/答案中阅读更多关于它的内容(只需查找参考资料)。

请注意不要使用&= (按位操作),而不要使用=& (通过引用分配)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40497487

复制
相关文章
面向对象 类的成员
*ps:非要访问私有成员的话,可以通过 对象._类__属性名,但是绝对不允许!!!*
changxin7
2019/08/14
8530
面向对象 类的成员
【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )
可以使用 对象名.‘成员名’ 访问 Groovy 类的成员 , 这样写的好处是 , 不用将代码写死 , 在运行时可以自由灵活的决定要访问哪个成员 ;
韩曙亮
2023/03/30
2.4K0
【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )
PHP面向对象-子类对父类成员的访问(二)
子类可以继承父类的方法,并且可以覆盖它们以实现自己的行为。子类可以调用继承的方法,包括公共、保护和私有方法。下面是一个示例:
堕落飞鸟
2023/04/28
9350
PHP面向对象-子类对父类成员的访问(一)
在PHP面向对象编程中,子类可以继承父类的属性和方法,并且可以访问和修改它们。子类可以通过继承和覆盖父类的方法来实现自己的行为,也可以通过调用父类的方法来扩展父类的行为。
堕落飞鸟
2023/04/28
1.3K0
Java面向对象——类及类的成员
本讲主要初步了解面向对象,介绍了类的组成部分,并且通过Person类来讲解了类的属性和方法,因为Java是面向对象开发的,所以在项目中会创建很多类和对象,所以这一讲是十分重要的。我们也认识了方法的定义和调用,后续也会写很多方法进行实战。
小明爱吃火锅
2023/09/28
2870
C++中类和对象以及成员函数
一个实体拥有自己的属性和行为,属性是私有的,行为是共有的,在C++中实体对应的就是对象,实体抽象数据类型就是类,属性是成员变量,行为是成员函数。
用户7886150
2021/02/04
1.4K0
c++中对象和类的关系_类的对象只能访问该类的私有成员
类是对于某一类对象的一个统称,类是对象的抽象化,对象是类的实例。定义一个类时,相当于定义了一个数据类型的蓝图。但实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作,就是单纯的进行了一个定义。
全栈程序员站长
2022/11/01
1.7K0
Python中类的成员
细分类的组成成员 之前咱们讲过类大致分两块区域 class A: name = '陈松' # 第一部分:静态字段(静态变量)部分(这一部分调用了类自己本身,表示了类自己的自身属性) def __init__(self): pass def func(self): pass # 第二部分:方法部分(这一部分表示了类可以实施的方法,可以 自己或其他进行操作) 每个区域详细划分 class A:#在方法名前面带__的属于私有 compan
星陨1357
2023/03/14
9910
Python中类的成员
【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法
- (type) methodName : type parameterName;
韩曙亮
2023/03/27
8850
C++ 成员对象和封闭类
上例中,如果 CCar 类不定义构造函数,则会使用默认的无参构造函数,那么下面的语句会编译出错:
小林coding
2020/03/31
6920
Python面向对象进阶及类成员
先执行了Cat的构造方法,然后又执行了Annimal的构造方法。 第二种执行父类的方法如下:
py3study
2020/01/06
6400
震惊!_类内成员函数可以访问本类对象的私有成员
私有成员是head,有一个成员函数的形参是本类对象(的引用,引不引用不影响结论和原因)
用户10551528
2023/05/09
8740
震惊!_类内成员函数可以访问本类对象的私有成员
PHP-面向对象(类和对象在内存中的分布)
1.8 类和对象在内存中的分布 对象的本质是一个复杂的变量 类的本质是一个自定义的复杂数据类型 栈区:运行速度快,体积小,保存基本类型 堆区:运行速度稍慢,体积大,保存复杂类型 实例化的过程就是分配内
cwl_java
2022/11/30
4340
PHP-面向对象(类和对象在内存中的分布)
PHP类与对象
将对象实例赋值给一个新变量时,新变量访问的是同一实例。要创建一个新实例必须使用克隆操作
码一
2022/06/03
1.6K0
PHP类与对象
PHP类与对象
面向对象(Object Oriented,OO)其是以对象模型为基础进行的抽象过程,并在应用过程中形成了描述自己的抽象概念定义,包括对象、类、封装、继承以及多态等。
老雷PHP全栈开发
2020/07/02
5020
C++对象成员的引用 | 对象成员引用
C++不仅可以在类外引用对象的公用数据成员,还可以调用对象的公用成员函数,但同样必须指出对象名,应该注意所访问的成员是公用的还是私有的,只能访问public成员,而不能访问 private成员。
小林C语言
2021/01/21
2.1K0
C++对象成员的引用 | 对象成员引用
PHP 面向对象类的理解
     学习PHP第三天,写下自己对PHP面向对象的理解。       对于编程来说没有代码没有真相。 /** * PHP chilid类 */ class chilid { //类属性 public $name; var $sex; var $age; var $book; var $like; //构造函数 function __construct($cname,$csex,$cage){
星宇大前端
2019/01/15
5540
PHP 面向对象类的继承
PHP的单继承特点 : 单继承,一个子类只能继承一个父类, 想要达到继承多个类的效果可以采用链式继承
很酷的站长
2023/02/03
6190
PHP面向对象-类的常量
在 PHP 中,类的常量是指在类定义中定义的固定值,一旦定义就不可改变。类的常量可以被类的任何方法调用,也可以通过类名直接访问。与普通变量不同,类的常量在定义时必须被赋值,并且不能被重新赋值或取消定义。类的常量是通过 const 关键字定义的。
堕落飞鸟
2023/04/28
8700
深入理解Python面向对象-类成员
Python是一个面向对象的语言,但是因为python语言的特性,我们大多的python程序员只是把它当做一个工具,在我们项目的实际使用中除了使用Django框架以外,其他的都是使用python最基础的方式,完全跟pythonic没有一点关系,当然主要还是因为我们能力太差。面向对象是书写各种框架的基础,python的面向对象不仅拥有通用面向对象的特性,而且还拥有一些极其强大的特性,可以让我们把它的便利性发挥到极致。本篇将详细介绍Python 类的成员、成员修饰符、类的特殊成员。
星星在线
2019/05/28
7290

相似问题

将类的成员调用到另一个类

10

在PHP中访问类中对象的成员

62

PHP:在另一个类中作为成员的类

24

另一个类的成员对象

21

使多个类对象成员成为C++中另一个类的成员

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文