我编写了一个文件处理程序类,其工作原理如下:
__construct
打开并 ex-locks 文件,读取其json-content和解析作为PHP数组,将其保留为类的属性。__destruct
编码已完成的数组,将写入文件,解锁文件。一切正常......
问题:
将Array保持为原始类的属性是否合理,或者将Array传递给worker-class更好,让它们最后返回?
也许有一种方法可以在本地保存数组,并通过引用将其传递给工人类,而不是原始数据?
我的意思是......这是一个没有重复,留下记忆的问题。一个速度问题,而不是不必要的事情。还有一个最佳实践问题,让事情易于理解。
答案 0 :(得分:1)
实际上,通过将数组传递给另一个函数,让该函数修改数组,然后将其返回给其他可能也可能不对其进行修改的调用者,实际上是多次复制该数组(< em>因为这会在PHP 中调用copy-on-write语义,并且根据定义浪费内存。
然而,通过将其保留为对象实例的属性,即使调用者不是同一个实例,也不会调用任何写时复制语义。由于传递对象实例不会复制数组,也不会从所述实例进行修改。
更不用说你只是更容易在该对象中保留状态(假设你关心验证)。