【问题标题】:What is better approach?什么是更好的方法?
【发布时间】:2014-05-03 00:49:43
【问题描述】:

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

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

【问题讨论】:

  • 嗨 aceph,你认为你能想出一个更有表现力的问题标题并更新它吗?

标签: php class memory


【解决方案1】:

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

最终你需要的变量可以是静态的吗?

【讨论】:

    【解决方案2】:

    不会影响记忆。只要您传递一个对象,它就会通过引用(如果您使用 & 操作数)或标识符(不带 &)来传递。由于您没有创建新的 zval 容器(就像您通过值传递某些内容并开始更改它一样),所以内存应该没问题。

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

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2021-08-18
      • 2011-10-30
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2010-10-26
      相关资源
      最近更新 更多