什么是更好的方法?

时间:2014-03-25 09:24:31

标签: php class memory

我正在开发一个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的副本。

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

2 个答案:

答案 0 :(得分:1)

在php中你可以传递一个引用:http://www.php.net/manual/fr/language.references.php 但我甚至不确定你是否会遇到记忆问题。

最终你所需的变量可能是静态的吗?

答案 1 :(得分:0)

它不会影响记忆力。只要您传递一个对象,它就会通过引用(如果您使用& 操作数)或通过标识符(没有& )传递。既然你没有创建一个新的zval容器(就像你按值传递一些内容并开始更改它),那么内存应该没问题。

你应该小心,因为这两种方法在某些情况下会有所不同。看看这个excellent answer,看看它们之间的确切区别。但根据经验,如果你想传递一些东西并对其进行更改,请务必使用&amp ;.

传递它。