在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在我上一篇: shopnc 商城源码阅读笔记--开篇概述 中,遇到了一个PHP引用传值导致的错误,情况大致如下:
在我查阅PHP官方文档 的中文版的时候 http://php.net/manual/zh/language.references.pass.php 看到如下描述: 注意在函数调用时没有引用符号——只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。在最近版本的 PHP 中如果把 & 用在foo(&$a); 中会得到一条警告说“Call-time pass-by-reference”已经过时了。 然后切换到英文版文档得到以下描述: Note: There is no reference sign on a function call - only on function definitions. Function definitions alone are enough to correctly pass the argument by reference. As of PHP 5.3.0, you will get a warning saying that "call-time pass-by-reference" is deprecated when you use & in foo(&$a);. And as of PHP 5.4.0, call-time pass-by-reference was removed, so using it will raise a fatal error.
一个轻轻地,温柔地告诉你,没事的,不会很痛,一下子就过了,让你有用@屏蔽警告的冲动 实际上这会让你痛得死去活来,根本无法继续。 所以这个问题根本没有什么为什么,非常清楚 光是函数定义就足够使参数通过引用来正确传递了,如 function test(&var){ } 不必在调用test的时候再进行引用传递,如 test(&var); 否则会报致命错误,跟没写分号一样,没有什么为什么!
另外获得一个宝贵经验:以后在看官方文档的时候,不要看中文版. 如果英文不好,可以搜集相关的博文,看别人总结出来的知识也比看中文官方文档好。
|
2022-08-17
2022-11-06
2022-07-29
2022-08-17
2022-08-12
请发表评论