按引用传递或按值传递


Pass by reference OR by value

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

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");

有什么想法吗?感谢:)

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

如果你这样做是为了优化,那么这是完全没有必要的。当您将字符串传递到函数中时,它将不会被复制!通过引用传递它不会占用更少的内存,或者在其他方面更高效。PHP对内存的处理超出了您的控制范围,PHP正在为您处理事情,不需要您进行这样的优化。请参阅写时复制和字符串实习,这是PHP在幕后所做的。

PHP引用不是C指针!它们是一个更高层次的概念,目的是"输出参数",而不是优化。您的API显然不是为使用引用而设计的,所以不要使用它们。