2013-12-12 50 views
2

我有以下情况:一个类中存储键值的数组并返回void。
这是方法:如果有时只需要,我应该总是返回一些东西吗?

<?php 
abstract class MyClass 
{ 
    // ... 

    protected function setAttribute($name, $value, $skipCasting = null) 
    { 
     // ... 

     $this->attributes[$name] =& $value; 
    } 

    // ... 
} 

现在我用这个方法在我的应用程序和我刚才设置的属性次,次,另外50%50%,好几次我还需要回我正在设置的值。

我想知道,在性能方面,如果我总是返回东西会有一个(显著)记忆力减退

+0

OOP中通常的做法是返回$这一点,这样你可以链制定者/等功能 – Jessica

+2

@Jessica http://en.wikipedia.org/wiki/Fluent_interface –

回答

1

现在,我在我的应用程序中多次使用这种方法,并且我只设置了属性的50%,对于另外50%的时间我也需要返回我设置的值。

在这种情况下,你可能需要两种不同的方法setter和一个getter,像这样的例子: -

abstract class MyClass 
{ 
    // ... 

    protected function setAttribute($name, $value, $skipCasting = null) 
    { 
     // ... 

     $this->attributes[$name] =& $value; 
    } 

    public function getAttribute($name) 
    { 
     return $this->attributes[$name]; 
    } 
} 

调用适用功能根据您的需要的方式。

我想知道,在性能方面,如果我总是会返回一些会有(重大)内存损失?

不,不用担心,如果你不需要使用它们,你可以很安全地忽略任何方法或函数的返回值。

+0

感谢@vascowhite,其实我已经有一个getter 。这一点是避免调用另一种方法。这可以通过setAttribute()已经返回一个值来完成! – jan267

+0

在这种情况下,忽略我的答案的前半部分:) – vascowhite

+0

大声笑好!谢谢:) – jan267

0

您主要关心的是内存分配/性能? PHP自己做垃圾收集,通常作为一个单独的线性过程来执行,因此内存分配等并没有真正考虑。

它不是最好的做法,对内存分配没有兴趣,但是在单线程,单数进程中,它比在基于多线程的基于.net的服务中不那么重要。

编辑:如果您选择颇为关心的内存管理,这个脚本执行很长一段时间,看看

http://www.php.net/manual/en/features.gc.php

它显示了如何做一些垃圾收集在长时间运行的脚本。

1

如果在很大程度上取决于解释器,但在大多数语言中,函数的返回值只是一个推入堆栈的值,然后由调用者弹出。

在诸如PHP这样的高级语言中,它有自己的内存管理器和垃圾回收器,担心这些事情有点太多,但是如果你真的担心它,那么它可能更安全将该值存储在一个变量中,然后调用该函数并在之后使用它。

相关问题