通过引用或按值传递

时间:2014-09-12 18:26:17

标签: php

我需要能够允许类的构造函数通过引用或值传递。

class test{

   public function __construct(&$value){
   }

}

$reference = "I'll be passed by reference of course";

//Everything good
$test = new Test($reference);

//This of course WONT work
$test = new Test("This would be by value ... on a reference, not cool since I don't refere to any other variable");

有什么想法?谢谢:))

1 个答案:

答案 0 :(得分:1)

  

也许是因为字符串文字可能太大了?

如果您为了优化而执行此操作,则完全没有必要。将函数传递给函数时,的字符串将被复制!通过引用传递它不会使用更少的内存或更高效。 PHP对内存的处理是您无法控制的,PHP正在为您处理事情,并且不需要您的优化。请参阅copy-on-writestring interning,这是PHP在幕后所做的事情。

PHP引用不是C指针!出于“输出参数”的目的,它们是更高级别的概念,而不是用于优化。您的API显然不是为了使用引用而设计的,所以不要使用它们。