The following code reports an error: Fatal error: Call-time pass-by-reference has been removed
function myFunc($arg) { do something... }
myFunc(&$arg);//Call myFunc
or
function myFunc(&$arg) { do something... }
myFunc(&$arg);//Call myFunc
Error analysis:
allow_call_time_pass_reference boolean
Whether to issue a warning when parameters are passed by reference during function calls. This method is deprecated and will likely no longer be supported in a future version of PHP/Zend. The encouraged approach is to specify in the function definition which parameters should be passed by reference. Everyone is encouraged to try turning this option off and ensuring that the script runs properly to ensure that the script also works in future versions (you will receive a warning every time you use this feature).
It is not recommended to pass parameters by reference when calling functions, because it affects the cleanliness of the code. If a function's parameters are not declared to be passed by reference, the function can modify its parameters through undocumented methods. To avoid its side effects, it is best to specify only when the function is declared that parameters need to be passed by reference.
Changelog for allow_call_time_pass_reference Version Description
5.4.0 Removed from PHP.
5.3.0 Emits an E_DEPRECATED level error.
5.0.0 Deprecated, and generates an E_COMPILE_WARNING level error.
Pass-by-reference parameters have been removed when calling functions , that is, you cannot pass parameters to call functions through function(&$a).
Solution:
Check your php.ini configuration file, adjust the allow_call_time_pass_reference parameter to true, and try restarting the server .
In addition, the previous php code may cause this error after upgrading to version 5.4 of php:
When we use functions (or classes) like this, an error will be generated:
myFunc(&$arg);//Call myFunc
Actually, it is wrong to use it this way, but the previous error level was only Deprecated.
The correct way to use it should be when defining the function:
function myFunc(&$arg) { do something... }
And just pass the parameters directly when calling:
myFunc($var);//Call myFunc
It means that reference parameters have been removed when calling, that is, you cannot pass parameters to call functions through function(&$a).
Solution:
Check you php.ini configuration file, adjust the allow_call_time_pass_reference parameter to true, and try restarting the server.
========================================
In addition, previously The php code may have this error after upgrading to version 5.4 of php:
When we use a function (or class) like this, an error will be generated:
foo(&$var );
Actually, it is wrong to use it this way, but the previous error level was only Deprecated.
The correct way to use it should be when defining the function:
function foo(& $var) {
//other code
}
And Just pass the parameters directly when calling: foo($var);
Go to the problematic line and remove the & from variables such as &$this, then restart xampp or bugfree;
or modify allow_call_time_pass_reference=On in php.ini