提问人:Sutton 提问时间:9/22/2022 更新时间:9/23/2022 访问量:44
如何在 PHP 中更新函数中的引用参数
How to update reference argument in functions in PHP
问:
如果我有两个函数,这两个函数的参数都包含对字符串的引用。一个函数将调用另一个函数,但两个函数都可以设置引用变量的值。
目前,下面的代码将保留变量,而不是更新变量。我确信正在设置原因,因为我可以在它设置原因的地方断点(甚至在当前范围内输出原因)。NULL
function function_a(string $path, ?string &$reason = null): ?string {
// Set to false for example purposes
$checkIsValid = false;
if(!$checkIsValid) {
$reason = 'Reason why it is invalid';
return null;
}
return function_b($path, $reason);
}
function function_b(string $path, ?string &$reason = null): ?string {
$anotherValidCheck = false;
if($anotherValidCheck) {
$reason = 'Another reason why it is invalid';
return null;
}
return 'Some value';
}
还有一个核心 PHP 函数,它使用与我试图实现的功能类似的功能(exec
函数中的输出参数)。另一个示例是 .NET 中的关键字。我猜因为PHP引用不太像你的典型参考,这行不通吗?out
答:
0赞
Sutton
9/23/2022
#1
虽然我没有在最初的问题中具体说明,但我使用的是 Laravel 外墙。出于某种原因,使用我想要的引用不适用于 Facade。也许是因为它如何覆盖这个特征。__call
Macroable
使用 DI 使用存储库类而不是门面为我解决了这个问题。
无论如何,希望这可能会帮助遇到此问题的其他人。
评论
function_a
'Reason why it is invalid'