在使用PHP按引用传递时,可能会出现下面这样的错误:
Fatal error: Call-time pass-by-reference has been removed in /Users/admin/Sites/HelloPHP/classes/DBConn.php on line 17
出现这样的错误是因为错误的引用传递导致的。先看看别人提供的解决办法:
一、php.ini配置问题
查看你的php.ini配置文件,把其中的 allow_call_time_pass_reference参数调整为true,并重启服务器试试。
二、不正确的引用传递
据说是因为PHP升级到了5.4才出现了这样的问题。
我们都知道,当我们定义了一个方法时,默认情况下是按值传递,比如下面代码:
$str = "XCoder Studio" ; |
function foo( $str ) { |
$str = "Qiu Tu" ; |
} |
foo( $str ); |
echo $str ; |
输入结果为“XCoder Studio”,这是常见的按值传递。如果我们将foo函数改为下面这样:
function foo(& $str ) { |
$str = "Qiu Tu" ; |
} |
就是在函数参数前加上一个“&”符号,表示是按引用传递。好了,问题就可能出在这里,有人可能会认为函数的调用应该是foo(&$str),如果真这样调用的话就会出现上述错误结果,按引用传递函数的正确调用方式还是foo($str),在定义的时候需要“&”,在调用的时候是不需要的。
先在的输出结果为:“Qiu Tu”。
三、对象的传递是怎样的?
对象的传递是不需要加上&符号的,对象的引用在函数参数中本身就是传递的一个引用地址。