Php 如果只是偶尔需要,我应该总是归还一些东西吗?

Php 如果只是偶尔需要,我应该总是归还一些东西吗?,php,oop,memory,memory-leaks,Php,Oop,Memory,Memory Leaks,我有以下场景:一个类,其方法在数组中存储键值并返回void。 方法如下: <?php abstract class MyClass { // ... protected function setAttribute($name, $value, $skipCasting = null) { // ... $this->attributes[$name] =& $value; } // ... } 您

我有以下场景:一个类,其方法在数组中存储键值并返回void。
方法如下:

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

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

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

    // ...
}

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

对内存分配不感兴趣并不是最好的做法,而是对单线程、单进程不感兴趣。与基于.net的多线程服务相比,它的重要性要小一些

编辑:如果您非常关心内存管理,并且此脚本执行时间很长,请查看


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

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

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

现在,我在应用程序中多次使用此方法,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];
    }
}
这样,您可以根据需要调用相应的函数

我想知道,在性能方面,如果我总是返回一些东西,会不会有(严重的)记忆丧失


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

OOP中的通常做法是返回$this,这样您可以链接setter/otherfunctions@Jessica谢谢@vascowhite,实际上我已经有了一个getter。关键是避免调用另一个方法。如果
setAttribute()
已返回值,则可以执行此操作!在这种情况下,忽略我答案的前半部分:)@Jessica OP代码周围有一些气味,但我不想通过进入它们来混淆答案。这就是其中之一。@Jessica此方法还用于通过_get()魔术方法存储值,以便在应用程序中的其他时间更快地检索值。然而问题不在于我为什么要做某事。。。但如果这样做会不会导致记忆丧失!!老实说,听起来你把注意力放在了错误的事情上。