今天在学习php的时候,遇到这样一个问题,如下:
( ! ) Fatal error: Call-time pass-by-reference has been removed in D:\xampp\htdocs\wenjian\test\app\exam\app.php on line 62 | ||||
---|---|---|---|---|
Call Stack | ||||
# | Time | Memory | Function | Location |
1 | 0.0015 | 136448 | {main}( ) | ..\index.php:0 |
2 | 0.0496 | 166104 | ginkgo->run( ) | ..\index.php:6 |
找到我编写的代码如下:
$this->tpl->assign('data',&$this->data);
解决方法是:
将上面代码中的 & 符号删掉。
具体解释如下:
意思是调用时引用传参已经被移除了,就是不能通过function(&$a)这种方式传参调用函数.
解决方案:
查看你的php.ini配置文件,把其中的 allow_call_time_pass_reference参数调整为true,并重启服务器试试。
======================================
此外,以前的php代码在升级到5.4版本的php可能会出现这种错误:
当我们这样使用函数(或者类)的话,会产生一个error:
foo(&$var);
实际上,这样用本来就是错的,只是之前的错误级别仅仅是Deprecated而已。
而正确的使用方法应该是在函数定义时:
function foo(& $var) {
//other code
}
而在调用时直接传参就行了: foo($var);