$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>

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

To work on file upload we are going to use the form helper. Here, is an example for file upload.

In this chapter, we are going to learn the following topics related to routing ?

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Validator can be created by adding the following two lines in the controller.
