douba8819 2014-09-12 18:26
浏览 25

通过引用或按值传递

I need to be able to allow in the constructor of a class to pass by reference OR by value.

class test{

   public function __construct(&$value){
   }

}

$reference = "I'll be passed by reference of course";

//Everything good
$test = new Test($reference);

//This of course WONT work
$test = new Test("This would be by value ... on a reference, not cool since I don't refere to any other variable");

Any thoughts? Thanks :)

  • 写回答

1条回答 默认 最新

  • dongshi9489 2014-09-12 18:45
    关注

    Perhaps because the string literal could be too big?

    If you're doing this for the purpose of optimisation, then it's entirely unnecessary. The string will not be copied when you pass it into the function! Passing it by reference does not use less memory or is otherwise more efficient. PHP's handling of memory is beyond your control, and PHP is handling things for you and doesn't need such optimisations from your side. See copy-on-write and string interning, which is what PHP does behind the scenes.

    PHP references are not C pointers! They're a higher level concept for the purpose of "output parameters", not for optimisations. Your API is obviously not designed to use references, so don't use them.

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题