我正在开发一个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 :(得分:1)
在php中你可以传递一个引用:http://www.php.net/manual/fr/language.references.php 但我甚至不确定你是否会遇到记忆问题。
最终你所需的变量可能是静态的吗?
答案 1 :(得分:0)
它不会影响记忆力。只要您传递一个对象,它就会通过引用(如果您使用& 操作数)或通过标识符(没有& )传递。既然你没有创建一个新的zval容器(就像你按值传递一些内容并开始更改它),那么内存应该没问题。
你应该小心,因为这两种方法在某些情况下会有所不同。看看这个excellent answer,看看它们之间的确切区别。但根据经验,如果你想传递一些东西并对其进行更改,请务必使用&amp ;.
传递它。