$a=new A 和 $a= & new A 到底有没有区别?解决办法
$a=new A 和 $a= & new A 到底有没有区别?
$a=new A; // $a 是 new A 的 指针 的一个拷贝 ( $a 保存的是 指针本身)
$a=& new A; // $a 是 new A 的 指针 的一个 引用 ( $a 保存的是 指针的地址)
以上说法正确吗?
另外:
$c= & $a 的时候, 为什么会把 $a 也变成了 A 的指针的 引用 ?
------解决方案--------------------
$c= & $a 的时候, 为什么会把 $a 也变成了 A 的指针的 引用 ?
是沿袭于 $a=& new A; ?
------解决方案--------------------
嘻嘻,&在C里面是取址符
------解决方案--------------------
php里的变量都是指针,但对于string,int等,赋值=是对象的拷贝,对于对象,赋值=是地址的拷贝(也就是引用),我现在感觉这么理解挺好的。
------解决方案--------------------
无论是 php 的什么版本 new 算符产生的都是引用
$a =& new A;
这种写法是不准确的。把一个对象的引用的引用赋给变量?
所以在 php5.3 就新增了一个错误类型,来规范书写的格式
Deprecated: Assigning the return value of new by reference is deprecated
php5.2及以前不报错,但并不等于就不是错。
就如同你屏蔽了 E_NOTICE 级别错误,但不能说就没有错,毕竟还是使用了 未经定义的变量或下标了嘛
------解决方案--------------------
很纠结的问题
------解决方案--------------------
正统的用法
$c = new A;
就当其它的用法都是扯淡了。
------解决方案--------------------
唉,还是看牛人的博客吧
http://www.laruence.com/2008/09/19/520.html
解释了你6楼的问题
------解决方案--------------------
查了一下手册:
关于引用:
在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身――变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的 hardlink。
关于new:
Construct an instance of "type" and store the reference to the object into "result".
所以$c = new A;是赋值引用而不是做对象拷贝。 $c = &new A; 是错误的写法。
自 PHP 5 起,new 自动返回引用,因此在此使用 =& 已经过时了并且会产生 E_STRICT 级别的消息。
------解决方案--------------------
关于赋值:
注意赋值运算将原变量的值拷贝到新变量中(传值赋值),所以改变其中一个并不影响另一个。这也适合于在很密集的循环中拷贝一些值例如大数组。也可以使用引用赋值,用 $var = &$othervar; 语法。引用赋值意味着两个变量都指向同一个数据,没有任何数据的拷贝。有关引用的更多信息见引用的说明。在 PHP 5中,对象总是通过引用赋值的,除非明确使用新的 clone关键字。
- PHP code
<?php $a = 1; $b = &$a; $c = $a; $b = 2; echo "a:$a, b:$b, c:$c\n"; $d = $b; $d = 3; echo "a:$a, b:$b, c:$c\n"; class A { public $foo = 1; } $oa = new A; $ob = $oa; $oa->foo = 2; echo "oa:$oa->foo, ob:$ob->foo\n"; ?> <br><font color="#e78608">------解决方案--------------------</font><br>$a =1;<br>$b = & $a; <br>不同的变量指向同一个地址,当其中一个($b=2)改变,那么另一个也会改变($a=2).但是把$b 销毁掉(unset($b))后 $a = 2还是存在的。<br><br>$a =1;<br>$b = $a;//他就是$b=1<br>=> $a =1;$b=1;<br>$b $a 没有一毛钱的关系 ,你是你我是我,谁也管不着谁。<br><br>$a=& new A; 这种东西我还真不用的,没啥意思。 <div class="clear"> </div>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。
