2014-03-25 41 views
0

我正在研究PHP框架。该框架开始通过使物体$registry在其中保持存储库,例如:什么是更好的方法?

$registry->set('document',new Document()); 
$registry->set('url', new Url()); 

有一些这就需要$registry为他们的业务库。所以这个框架将整个$registry传递给它们的构造函数。像:

$upload = new Upload($registry); //registry gets stored in a private var 
$registry->set('upload',$upload); 

而且有很多这样的库。他们在里面储存$registry的副本。

我的问题是,是否真的影响内存通过$注册表一次又一次地传递给这些库,冗余?如果是的话,我该如何避免它?

+0

你好,你认为你能想出一个更富有表现力的问题标题并更新吗? – danijar

回答

0

它不会影响内存。只要您传递一个对象,它就会通过引用(如果您使用操作数使用操作数)或标识符(不使用&)通过。由于你没有创建一个新的zval容器(就像你通过值传递一些东西并开始改变它),内存应该是可以的。

你应该小心,因为这两种方法在某些情况下工作方式不同。看看这个excellent answer看看他们之间的确切区别。但作为一个经验法则,如果您想传递某些信息并对其进行更改,请始终使用&来传递它。