Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么Symfony2中不使用引用运算符?_Php_Symfony_Reference_Frameworks - Fatal编程技术网

Php 为什么Symfony2中不使用引用运算符?

Php 为什么Symfony2中不使用引用运算符?,php,symfony,reference,frameworks,Php,Symfony,Reference,Frameworks,我已经用PHP编程很长时间了。最近我决定尝试使用一个框架。我碰巧选了Symfony2。我注意到的第一件事是,我从未遇到过任何引用运算符&。我在以前的项目中经常使用它们 我发现这个在我的电脑上 请注意,在PHP5中,在处理类对象时,通常根本不需要引用操作符,因为PHP5使用的实例更像C指针,而不是PHP的引用系统 在框架中,或者在PHP5中,引用是不常见的吗 编辑 我知道推荐人的作用和工作原理。我想知道为什么网站上的Symfony2示例在任何地方都不使用引用运算符。事实上,如果使用传递对象作为函数

我已经用PHP编程很长时间了。最近我决定尝试使用一个框架。我碰巧选了Symfony2。我注意到的第一件事是,我从未遇到过任何引用运算符&。我在以前的项目中经常使用它们

我发现这个在我的电脑上

请注意,在PHP5中,在处理类对象时,通常根本不需要引用操作符,因为PHP5使用的实例更像C指针,而不是PHP的引用系统

在框架中,或者在PHP5中,引用是不常见的吗

编辑
我知道推荐人的作用和工作原理。我想知道为什么网站上的Symfony2示例在任何地方都不使用引用运算符。

事实上,如果使用传递对象作为函数的参数,PHP不会创建对象的副本,而是简单地指向内存中该对象存在的同一位置。所以,只要不想做一些复杂的事情,指向内存中的另一个对象/变量,就不需要使用引用

您应该在PHP手册中查看

您也可以考虑以下代码:

<?php


class A {
    public $x= 20;
}


$a = new A();

echo $a->x."<br />";
change($a);
echo $a->x."<br />";

changeRef($a);

echo $a->x."<br />"; // you get notice in this line. $a is no longer A object
echo $a."<br />";



function change(A $b) {
    $b->x = 10;
    $b = 15;   
}


function changeRef(A &$b) {
    $b->x = 10;
    $b = 15;   
}
  $arr = [1,2,3];
  show($arr);

  function show($a) {
     foreach ($a as $item) {
        echo $item;
     }
  }
在上述情况下,不会创建$arr的副本,因此在这种情况下不需要使用引用。因此,如果不需要修改数组,就不需要使用引用,那么请毫不犹豫地回答您的问题。可能这就是为什么Symfony在这种情况下不使用引用

此外,引用使代码不那么清晰,因为如果不转到函数声明,您将不知道它可能修改您的数据。所以这可能是它们不那么常用的额外原因

注意:函数调用上没有参考符号-仅在函数定义上。仅函数定义就足以通过引用正确传递参数。从PHP5.3.0开始,当您使用&in-foo&$a;时,您将收到一条警告,指出不推荐使用按引用传递调用时间;。从PHP5.4.0开始,调用时间传递引用被删除,因此使用它将引发致命错误


正如我在问题中所说,我经常使用参考文献。我知道它们的用途和使用原因。我想知道为什么他们在传递普通数组等时不在Symfony2示例代码中使用引用运算符@BennoZeeman我在我的答案中添加了更多信息编辑后查看信息给许多开发人员,将数组作为引用传递被认为是一种不好的做法,因为数组不是对象,数组的引用会降低代码的可读性。PHP5有不同的接口,可以在类上实现,因此代码可以迭代它们的属性,例如,请参阅。例如,条令使用类而不是数组。