【发布时间】:2017-01-11 12:49:20
【问题描述】:
正如标题所问:可以调用一个通过引用传递一个尚未定义的变量的函数吗?
假设在任何情况下变量都将设置在函数内部。
我发布示例代码以提供问题的上下文:
function doStuff( &$error )
{
$error = false;
// Start doing stuff...
// ...
if( /* SOMETHING WRONG */ )
{
$error = "Something went wrong";
}
}
doStuff( $err ); // $err is not defined!
if( $err !== false )
{
// Handle the error, ex.
echo $err;
exit;
}
我用error_reporting ( E_ALL );在cli上试过了,没有报错。
我仍然要求确认它是否安全,没有缺点,编码模式是否不错......
【问题讨论】:
-
通过引用传递参数是一种不好的编码模式/习惯。没有提示读取
doStuff($err)行的人该函数将修改作为参数传递的变量。此外,没有暗示该函数不接受文字或常量作为参数。 -
@axiac 如果您在没有阅读文档的情况下调用随机函数,那么没有什么可以帮助您。在某些情况下,引用参数是一种完全有效的技术。
-
当你想返回一个布尔值并更新一些数组数据时非常有用。但是,这也可以通过使用存储任何错误的对象 (oop) 来实现,并且您可以添加方法以获得额外的功能。例如。 $errorObj = 新的错误消息(); doStuff($errorObj);
-
@JaredFarrish 谢谢你,非常有趣和可怕。我对 PHP 了解得越多,我就越不喜欢它。
标签: php pass-by-reference