-1
A
回答
4
那么另一个使用变量,另一个不是。这在这种情况下导致致命错误:
class test {
public function __construct(&$a)
{
}
}
$a = true;
new test($a);
new test(true); //Fatal error because this cannot be passed by reference
1
严格地说,这取决于如何定义测试。
如果test
被限定为使得输入参数是passed by reference,然后2
将提高一个致命的错误,因为true
是一个文字值。
此外,test
可能有副作用,这意味着您执行行1
和2
重要的顺序。
1
它取决于test
类的构造函数。在常规通按值构造它们是完全一样的:
class test {
public $b;
function __construct($a) { $this->b = $a; }
}
这里,$obj->b
将true
为您的声明,如预期。
如果,另一方面,你是passing by reference如果你改变了全球$a
以后你可能会得到不同的结果。例如:
class test {
public $b;
function __construct(&$a) { $this->b = &$a; }
}
$a = true;
$obj = new test($a);
$a = false;
$obj->b
会在这种情况下false
,因为它是$a
参考!随着引用,你也可以做它周围的其他方法,从构造方法中改变$a
:
class test {
function __construct(&$a) { $a = false; }
}
$a = true;
$obj = new test($a);
$a
现在是假的,甚至在全球范围内!
此外,new test(true)
不可能通过引用传递,因为您不能引用文字值,只能引用其他变量。
相关问题
- 1. 什么是SetupAPI,SetupAPI1和SetupAPI2?他们之间有什么区别?
- 2. Socket和Transport之间有什么区别,如果有一个
- 3. 什么是OLTP和OLAP。他们有什么区别?
- 4. 什么是CSS选择器':'和'::'?他们有什么区别?
- 5. EDI,AS2和GS1之间有什么区别?他们如何一起工作?
- 6. self.view.frame和self.superview.frame之间有什么区别以及如何使用它们?
- 7. “setNeedsUpdateConstraints”和“layoutIfNeeded”之间的区别是什么?他们什么时候会被叫?
- 8. “层”和“层”之间有什么区别?
- 9. Tableau和QlikView之间有什么区别
- 10. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之间有什么区别?
- 11. @Entity和@embeddable之间有什么区别
- 12. ContentObservable和DataSetObservable之间有什么区别?
- 13. touchmove和gesturechange之间有什么区别?
- 14. 这两行之间有什么区别?
- 15. :notification.flags和notification.defaults之间有什么区别?
- 16. proc和lambda之间有什么区别?
- 17. :: after和after之间有什么区别?
- 18. read()和io.read()之间有什么区别?
- 19. Request()和Request.Form()之间有什么区别?
- 20. DesiredCapabilities与RequiredCapabilities之间有什么区别?
- 21. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之间有什么区别?
- 22. getA()和this.getA()之间有什么区别?
- 23. (int)和intval()之间有什么区别?
- 24. set_value和= pandas之间有什么区别
- 25. * zoom和zoom之间有什么区别?
- 26. {0}和“”之间有什么区别?
- 27. typedef和using之间有什么区别?
- 28. “”和“'之间有什么区别?
- 29. STDIN和tty之间有什么区别?
- 30. Console.WriteLine()与Debug.WriteLine()之间有什么区别?
哇,为什么这个低估是超越了我...... :( –
SiGanteng,我同意。会很好的解释。 –